2011-07-14 13 views
7

Niezupełnie, ale pojawia się problem, w którym raz w niebieskim księżycu podczas uruchamiania tego skryptu, mój czas daje liczbę ujemną. tutaj jest częścią skryptu gdzie to się dzieje:Skrypt PHP ... cofa się w czasie?

public function execute() 
{ 
    $time1 = microtime(); 
    foreach($this->tables as $table) 
    { 
     if($this->buildQuery($table)) 
     { 
      if($this->submitQuery($table)) 
      { 
       $time2 = microtime() - $time1; 
       echo "Sync Successful({$time2}s).. $table <br /> \n"; 
       //log 
      } 
     } 
     else echo "No data to sync in $table"; 
    }  
} 

Jak można podejrzewać, .. nie powinno być nic złego odjęcie drugi raz od początku i coraz szacunkowe jak długo proces trwał .. jednak .. Gdybym uruchomienia go tyle razy, czasami wyniki będą wydrukować następujące:

Sync Successful(0.062936s).. users 
Sync Successful(-0.86901s).. profile 
Sync Successful(-0.798774s).. groups 
Sync Successful(-0.718851s).. phonebook 
Sync Successful(-0.711768s).. products 
No data to sync in locations 

jest to bardzo rzadkie, ale to jest dokładną moc mojego ostatniego wyniku. Moje pytania brzmiałyby:

Jak to jest możliwe? powoduje "negatyw", kiedy powinno to wyraźnie nie być możliwe.

Co mogę zrobić, aby tego uniknąć? Czy jest lepszy sposób na rozwiązanie tego problemu? Czy microtime() jest niewiarygodne?

Czy ktoś może mi pożyczyć 1981 DeLorean DMC-12 zdolny do 88 mp/h?

+3

możliwe duplikat [php profilowania z microtime(): Negatywny czas?] (Http://stackoverflow.com/questions/2607150/php-profiling-with-microtime-negative-time) – lonesomeday

+0

Whoa, to ciężki dokument. –

Odpowiedz

14

Zakładasz zły typ danych. manual page of microtime brzmi:

Domyślnie microtime() zwraca ciąg znaków w postaci „msec sec” [...]

Więc faktycznie odejmując jedynie wartości ms jak zarówno strings are converted to numbers przed rzeczywistą odejmowanie ma miejsce.

Zastosowanie microtime(true) uzyskać wartości float:

Jeśli get_as_float jest ustawiony na TRUE, wtedy microtime() zwraca pływaka [...]

+12

Jedna z tych wspaniałych decyzji dotyczących projektowania w PHP, która naprawdę sprawia, że ​​język jest tak przyjemny w użyciu. –

Powiązane problemy