Archiv verlassen und diese Seite im Standarddesign anzeigen : Serverload ausgeben
Halloo, es gibt ja für vBulletin ein paar Hacks, die den Serverload, die Ladezeit usw anzeigen. Ich versuche schon sehr lange, das auf eine Webseite zu übertragen auf der kein vb läuft. Irgendwie komme ich nicht weiter. Hab immer mit so dummen meldungen zu kämpfen. Warning: implode(): Bad arguments. in /home/www/templates/oben.php.tpl on line 18 hat jemand ne Idee, was ich am besten machen kann, um ein kleines aber feines Script zusammenzubekomme.
Am wichtigsten is der Serverload. Ohne alles. Nur die Blanken Zahlen 0.12 0.22 0.20
Hab auch schon versucht, das aus dem /admincp/index.php auszubauen, aber auch das is nicht wirklich gelungen..
Ich möchte auch keinen fertigen Code haben, nur ein paar Gedankenanstösse.. :)
Christian
06.07.2005, 16:43
Probier mal das:
<?php
if ($stats=@exec('uptime')) {
preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$stats,$regs);
$serverload=' [Server Load: <b>'.$regs[1].'</b> » '.$regs[2].' : '.$regs[3].']';
echo "$serverload";
}
?>
Demo: http://www.vbdesigns.de/sl.php
eine andere möglichkeit falls system aufrufe deaktiviert sind ( sollte man eigentlich machen )
serverload steht auch unter /proc/loadavg
die datei kann man einfach mit php auslesen (file_get_contents/file/fopen)
<?php
if ($stats=@exec('uptime')) {
preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$stats,$regs);
$serverload=' [Server Load: <b>'.$regs[1].'</b> » '.$regs[2].' : '.$regs[3].']';
echo "$serverload";
}
?> :) Erstmal danke. Ich glaub das Script hatte ich auch schon. Bei mir geht das Script so allerdings nicht. Nur am PHP-Safe-mode kanns glaube ich nicht liegen, denn ich hatte den erst ON und jetzt OFF.
http://hollii.de/hollii.ser.loa.php
Komisch. Obwohl das mit Sysinfo-Script z.b. geht. Und die Scripte, die ich bisher hatte, waren alle meist auch aufwendiger und länger. Nur was soll ich so ein fettes Script nutzen nur wegen dem Serverload. eine andere möglichkeit falls system aufrufe deaktiviert sind ( sollte man eigentlich machen )
serverload steht auch unter /proc/loadavg
die datei kann man einfach mit php auslesen (file_get_contents/file/fopen) Ich würde mal sagen, das Systemaufrufe bei mir nicht funzen.
if ($stats=@exec('uptime')) {
nimm da mal @ weg und schalte display_errors auf on in der php.ini
dann siehste woran es liegt
display_errors = On Hi. is on. und aba wo sollte ich den Fehler dann sehen, wenn ich das @ weg nehme? - unter /var/log/ steht nix und in den Error-Logs der Domain auch nicht.
//edit^: Das ist z.b. eines der Scripts, die ich entdeckt habe. Leider krieg ich das nicht angepasst. So das es allein-stehend läuft. Denn das is aus einem riesen Script entnommen. Denn das läuft nämlich auf meinem Server ;)
sysinfoscript 2.23
if($load =~ /^.+?average: +?(\S*? \S*? \S*?)$/){
($load1, $load5, $load15) = split(',',$1,4);
}else{
open(F,"/proc/loadavg");
($load1,$load5,$load15,$load30) = split(/\s+/,join("",<F>),4);
close(F);
$load1 = "<small>nicht gefunden</small>" unless($load1);
$load5 = "<small>nicht gefunden</small>" unless($load5);
$load15 = "<small>nicht gefunden</small>" unless($load15);
}
if($load =~ m/^.*?up +(\d+?) day[s\)\(\s,]+(\d+):(\d+).+?/i){
$updays = $1;
$upstd = $2;
$upmin = $3;
}elsif($load =~ m/^.*?up +(\d+?) day[s\)\(\s,]+(\d+):(\d+).+?/i){
$updays = $1;
$upstd = $2;
$upmin = $3;
}elsif($load =~ m/^.*?up +(\d+):(\d+).+?/i){
$updays = "0";
$upstd = $1;
$upmin = $2;
}elsif($load =~ m/^.*?up +(\d+) day[s\)\(\s,]+(\d+).+?/i){
$updays = $1;
$upstd = "0";
$upmin = $2;
}elsif($load =~ m/^.*?up +(\d+).+?/){
$updays = "0";
$upstd = "0";
$upmin = $1;
}else{
open(uptime,"/proc/uptime");
$buffer = <uptime>;
close(uptime);
@list = split(/\s+/, $buffer);
$ticks = sprintf("%.0u",(split(/\./,$list[0]))[0]);
$mins = $ticks / 60;
$mins = sprintf("%.0u", $mins);
$hours = $mins / 60;
$hours = sprintf("%.0u", $hours);
$days = ($hours / 24);
$updays = sprintf("%.0u", $days);
$hours = $hours - ($days * 24);
$upstd = sprintf("%.0u", $hours);
$upmin = $mins - ($days * 60 * 24) - ($hours * 60);
if(!$upstd && $upmin && $updays){
$upstd = "0";
}elsif(!$upstd){
$upstd = "?"
}
if(!$upmin && $upstd && $updays){
$upmin = "0";
}elsif(!$upmin){
$upmin = "?"
}
if($upmin && $upstd && !$updays){
$updays = "0";
}elsif(!$updays){
$updays = "?"
}
} Die Ausgabe: <tr>
<td bgcolor="#ddddFF" colspan="2"><font face="Verdana,Arial" size="2"><b>Durchschnittliche Serverlast vor:</b></font></td>
</tr>
<tr>
<td bgcolor="#ddddFF"><font face="Verdana,Arial" size="2">01 Minuten:</font></td>
<td bgcolor="#eeeeee"><font face="Verdana,Arial" size="2">$load1</font></td>
</tr>
<tr>
<td bgcolor="#ddddFF"><font face="Verdana,Arial" size="2">05 Minuten:</font></td>
<td bgcolor="#eeeeee"><font face="Verdana,Arial" size="2">$load5</font></td>
</tr>
<tr>
<td bgcolor="#ddddFF"><font face="Verdana,Arial" size="2">15 Minuten:</font></td>
<td bgcolor="#eeeeee"><font face="Verdana,Arial" size="2">$load15</font></td>
</tr>
@ Christian: Aufeinmal geht dein Script doch. Irgendwie verstehe ich das nicht wirklich. War gerade an den Templates dran und auf einmal sehe ich den Serverload :D hollii.de (http://hollii.de)
//edit^: Habe es jetzt richtig schick oben rechts eingebunden. :) Und zwar habe ich das Script an sich ausgelaggert in die die /func/func.php 'Hollii-Functions-Datei' :D und im Template (oben.php.tpl) nur noch die Abfrage drin. <?php echo "$serverload"; ?> Jetzt mache ich noch ne nette Erklärung dazu und dann is das schick. :)
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.