Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]procentowy uptime i niezmieniające się dane ...
Agape
post 13.06.2010, 19:36:43
Post #1





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


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 ...


--------------------
Go to the top of the page
+Quote Post
erix
post 13.06.2010, 19:47:26
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A wiesz, że w językach programowania numery indeksów w tablicy zaczynają się od zera?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 12:14