Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]procentowy uptime i niezmieniające się dane ...
Forum PHP.pl > Forum > Przedszkole
Agape
Jako że przestrzegam praw Murphy'ego zawsze wszystko wole najpierw sprawdzić bo wychodzą właśnie takie rzeczy. Chcę napisać skrypt lokalnie liczący uptime serwera i wypisujący go w procentach (ile czasu był włączony w odniesieniu do czasu liczenia).

Jeżeli nie było reboot'a to:
aktualny czas - czas rozpoczecia zliczania - czas z uptime musi być równy 0. Niestety u mnie jest jakaś anomalia i wychodzi:

Kod
Array
(
    [0] =>
    [1] => 20:33:16
    [2] => up
    [3] => 61
    [4] => days,
    [5] => 11:23,
    [6] =>
    [7] => 0
    [8] => users,
    [9] =>
    [10] => load
    [11] => average:
    [12] => 0.01,
    [13] => 0.03,
    [14] => 0.06

)
1276453980
1271182560
5270400
1020
99.9999200911%


  1. //pobieranie czasow z serwera
  2. $uptime = shell_exec('uptime');//pobranie aktualnego uptime
  3. echo '<pre>';
  4. print_r($uptime = split(' ', $uptime));
  5.  
  6. $dni = $uptime[3];
  7. $czas = split(':', $uptime[6]);
  8. $godziny = $czas[0];
  9. $minuty = str_replace(',', '', $czas[1]);
  10.  
  11. if (mysql_num_rows($pobierz_dane)=="0"){
  12. //jesli nie ma nic w bazie danych
  13. $data_startowa = mktime(date("H")-$godziny, date("i")-$minuty, 0, date("n"), date("j")-$dni, date("Y"));
  14. $zapisz_date_startowa = mysql_query('INSERT INTO `_uptime-serwera` VALUES("'.$data_startowa.'", "'.$data_startowa.'", "'.$data_startowa.'")');
  15. }else{
  16. $dane = mysql_fetch_assoc($pobierz_dane);
  17.  
  18. $dlugosc_uptime = ($godziny*60*60)+($minuty*60)+($dni*24*60*60);
  19. $terazniejsza = strtotime(date("Y-m-d H:i"));
  20.  
  21. echo $terazniejsza.'<br>';
  22. echo $dane['rozpoczecie'].'<br>';
  23. echo $dlugosc_uptime.'<br>';
  24.  
  25. echo ($terazniejsza - $dane['rozpoczecie'] - $dlugosc_uptime).'<br>';
  26. echo (($dane['rozpoczecie'] + $dlugosc_uptime)/$terazniejsza*100).'%';
  27. }


Sory za balagan w kodzie. Mimo ze czas w tablicy $uptime czas sie zmienia, to $godziny $minuty $dni sa zawsze takie same. Patrze sie enty raz w kod i ciagle wrazenie ze wszystko jest dobrze :|. Odrazu po wpisaniu przez skrypt czasu do bazy, wynik = 100%. Pozniej co minute sie obniza ...
erix
A wiesz, że w językach programowania numery indeksów w tablicy zaczynają się od zera?
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.