CPU Auslastung in php Datei ausgeben

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

TopTobi

Benutzer
Registriert
03. Apr. 2011
Beiträge
256
Reaktionspunkte
0
Punkte
0
Hallo,

Gibt es eine Möglichkeit die CPU Auslastung in einer .php Datei auszugeben? Ich möchte diese gerne auf meiner Startseite einbinden.
 
gib mal uptime auf der Kommandozeile an. Das sollte dir unter anderem die Lastwerte anzeigen. Wenn das auf der Konsole klappt kannst du dich dann mal an ein PHP File mit der Funktion exec() machen
 
Mit dem Befehl bekomme ich auf der Kommandozeile folgendes angezeigt:
Rich (BBCode):
 16:12:28 up 1 day,  3:49, load average: 2.63, 3.46, 3.33


Ich würde in der php Datei gern einen Prozentwert haben wollen. Ich hab aber von php noch so gut wie keine Ahnung.
 
LA ist genau genommen nicht die CPU Last sondern iowait. Für PHP gibts noch die Funktion getloadavg(). CPU Auslastung kannst Du soweit ich weiss mit den Infos in /proc/cpuinfo auslesen.
 
Oje, und wie soll ich das jetzt machen? Ich hab kein Plan.
 
Stimmt, ist mir auch grad aufgefallen.

Was sagt ein cat /proc/mdstat? Könnte es sein dass die PhotoStation was rumkonvertiert?
 
ich würde die Werte, welche von 'top' (IPKG) ausgeben werden, verwenden, also so etwas in der Art:

PHP:
$CPU = exec("/opt/bin/top -b -n 1 |awk 'NR>7&&NR<30 {s+=$9} END {printf(\"%2.1f%%\",s)}'");

Itari
 
Rich (BBCode):
Familienserver> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid1 sdb5[0]
      1948779648 blocks super 1.2 [1/1] 

md1 : active raid1 sdb2[0]
      2097088 blocks [2/1] [U_]

md0 : active raid1 sdb1[0]
      2490176 blocks [2/1] [U_]

unused devices: <none>



Die Werte sind so hoch, weil pyLoad gerade loadet und/oder entpackt.
 
Okay wie könnte ich das den jetzt in die php Datei schreiben damit es funzt? Habe wirklich so gut wie keine Ahnung von php.
 
Mit dem Code von itari kommt ein:
Rich (BBCode):
Warning: exec(): PHP exec disable. in /volume1/web/test.php on line 2
 
Musst Du aktivieren bei php optionen im DSM
 
Was muss ich aktivieren?
Meine php Einstellungen im DSM sehen so aus: http://img197.imageshack.us/img197/2639/phpbj.jpg

Super jetzt habe ich mal testweise register_globals und open_basedir aktiviert und wieder deaktiviert, jetzt melden alle anderen php Seiten:

Rich (BBCode):
Warning: Unknown: open_basedir restriction in effect. File(/volume1/www/sonstiges/bilder/index.php) is not within the allowed path(s): (/etc:/etc.defaults:/tmp:/usr/bin/php:/usr/syno/synoman:/var/packages/MailStation/target/roundcubemail:/var/run:/var/services/blog:/var/services/homes:/var/services/photo:/var/services/web:/var/spool/php:/volume1/@tmp/php) in Unknown on line 0 Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0 Fatal error: Unknown: Failed opening required '/volume1/www/sonstiges/bilder/index.php' (include_path='.:/usr/syno/php/lib/php') in Unknown on line 0

Aber ich habe das benutzerspezifische open_basedir doch wieder deaktiviert. Warum geht es dann nicht wieder?
 
du musst open_basedir eben benutzerspezifisch haben. Dort drin muss /volume1/www aufgeführt sein, sonst darf PHP diese Dateien nicht ausführen. Es gibt noch eine weitere Option (und die meinte ubutnulinux wohl). Heisst irgendwas mit "enable safe_mode_exec_dir" und sollte auf jeden Fall deaktiviert sein
 
Danke, php Dateien funktionieren wieder.

Jetzt kommt zwar kein Fehler mehr wenn ich safe_mode_exec_dir ausschalte, aber es wird nichts angezeigt. Datei ist "leer".

http://www.unser-familienserver.de/test.php

Inhalt der php Datei:

Rich (BBCode):
<body>Test:  <?php $CPU = exec("/opt/bin/top -b -n 1 |awk 'NR>7&&NR<30 {s+=$9} END {printf(\"%2.1f%%\",s)}'"); ?>
  <br>

</body>
 
nein leer ist sie sicher ned. mach mal Rechtsclick Quelltextansicht. Dort drin wird <body>Test:  <br></body> stehen ;-)
Das Problem ist dass du überhaupt nichts ausgbist mit PHP.
probiers mal so
PHP:
<?php 
$CPU = exec("/opt/bin/top -b -n 1 |awk 'NR>7&&NR<30 {s+=$9} END {printf(\"%2.1f%%\",s)}'"); 
echo $CPU;
?>
Besser wäre es so
PHP:
<?php
$ret = 1;
$wert = array();
@exec("/opt/bin/top -b -n 1 |awk 'NR>7&&NR<30 {s+=$9} END {printf(\"%2.1f%%\",s)}'",$wert,$ret);
if($ret === 0) {
 echo implode("\n",$wert);
}else
 echo 'ein Fehler ist aufgetreten';
}
?>
 
Danke.

Beim zweiten Code kommt ein

Rich (BBCode):
Parse error: syntax error, unexpected '}' in /volume1/web/test.php on line 29

Leider funktioniert die Anzeige auch nicht es zeigt immer 0.0% an, sogar wenn ich entwas entpacke. Das kann nicht stimmen.
 
PHP:
}else {
 echo 'ein Fehler ist aufgetreten';
}
 
Der Code "funktioniert" zwar nun, aber leider zeigt er auch immer 0.0%, das stimmt aber natürlich nicht.
 
Keiner ne Idee woran's liegt das es nicht richtig funktioniert? :)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat