Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pomiar obciążenia CPU
Forum PHP.pl > Forum > Przedszkole
tomsi
Znalazłem w internecie taki kod:

  1. $wyk = 'top -b -n 1 | awk {'print $9'}';
  2.  
  3. echo "<br>";
  4. ob_start();system($wyk);$wynik = ob_get_contents();ob_end_clean();
  5. $wynik = explode("%CPU", $wynik);
  6. $obc = 0;
  7. foreach(explode("\n", $wynik[1]) as $proc)
  8. {
  9. $obc += $proc;
  10. }
  11.  
  12. echo $obc.'%';


Czemu dostaje zawsze odpowiedź 0%?


Jak wstawię taki znaleźiony kod:
  1. $output = shell_exec ( 'ls -lart' );
  2. echo "<pre>$output</pre>" ;

to dostaje pustą stronę.

Dodam, że pracuje lokalnie na apache'u.
gothye
pracujesz na linux ? to pobierasz z /proc/loadavg
tomsi
Windows XP
erix
Jak to ma na Windowsie działać, skoro takiego polecenia domyślnie nie ma?

Ściągnij sobie pakiet msys i dodaj do ścieżki poszukiwań w zmiennej środowiskowej PATH.
tomsi
Ściągnąłem to:
http://sourceforge.net/projects/mingw/file...11.exe/download

a w zmiennych środowiskowych dodałem tak:

Nazwa zmiennej: PATH
Wartość zmiennej: C:\msys\1.0

I dalej nie działa.
erix
Ale tam jest chyba jeszcze podkatalog bin, o ile pamiętam. winksmiley.jpg

Poza tym, musisz zrestartować demona, aby zmienne środowiskowe były uaktualnione. Poza tym, masz możliwość modyfikowania ich dla tylko użytkownika albo całego systemu. To również jest istotne.
tomsi
Kod z shell_exec działa, ale ten nie

  1. $wyk = 'top -b -n 1 | awk {'print $9'}';
  2.  
  3. echo "<br>";
  4. ob_start();system($wyk);$wynik = ob_get_contents();ob_end_clean();
  5. $wynik = explode("%CPU", $wynik);
  6. $obc = 0;
  7. foreach(explode("\n", $wynik[1]) as $proc)
  8. {
  9. $obc += $proc;
  10. }
  11.  
  12. echo $obc.'%';
thek
A pomyślałeś o jednej sprawie jaką są uprawnienia? Możesz określać jakie polecenia powłoki są dla usera dostępne a jakie nie. Możliwe, że top zostało zablokowane przez providera, by nie mogli odczytać procesów uruchomionych na danej maszynie, a tym samym nie podjęli próby ubicia jakiegoś procesu. Ja miałem do czynienia z takimi niedoróbkami administracyjnymi. Założono na kompie publicznym blokadę na wyświetlanie Menedżera procesów w trybie GUI i limitowano userom dostęp do netu na okres godziny. Po niej komp się wyłączał automatycznie. Tylko że nie zablokowano dostępu do konsoli i jej poleceń. Efekt? Używałem kompa ile chciałem bo robiłem sekwencję: cmd -> tasklist -> wyszukanie procesu nadzorującego -> taskkill smile.gif Polecenie top jest niebezpieczne bo podaje Ci PID procesów uruchomionych. Jeśli masz odpowiedni poziom uprawnień dla Apache'a to możesz zrobić jazdę na serwerze tłukąc procesy jakie wpadną do kręgu Twoich uprawnień.
tomsi
No ok, ale ja mam apacha lokalnie zainstalowanego. Można jakoś sprawdzić te uprawnienia?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.