2013-03-04 18 views
6

Mam skrypt PHP ładowany przez JS poprzez JQuery's $.ajax. I zmierzył czas wykonania skryptu PHP przy użyciu:Niespójny czas ładowania JS i PHP

$start = microtime(); // top most part of code 
// all other processes that includes AES decryption 
$end = microtime(); // bottom part of code 
file_put_contents('LOG.TXT','TIME IT TOOK: '.($end-$start)."\n",FILE_APPEND); 

Mierzona gdzieś mniej niż 1 sekundę. Nie ma żadnych skryptów PHP typu prepend/append.

W JS kodu $.ajax, I mierzono czas wykonywania przez:

success: function(response) { 
    console.log(date('g:i:s a') + ' time received\n'); 
    // all other processes including AES decryption 
    console.log(date('g:i:s a') + ' time processed\n'); 
} 

czas jest taka sama dla czasu otrzymania i czas przetwarzania.

Jednak po sprawdzeniu Narzędzi dla programistów w Chrome, , twierdzi on, że skrypt PHP został załadowany przez około 8 sekund.

Co może być nie tak w tym, jak zmierzyłem te rzeczy? Jestem pewien, że PHP ładuje się szybko, ale dlaczego Chrome zgłasza, że ​​zajęło to więcej niż 8 sekund?

Używam localhost i mój serwer WWW działa szybko i jest to jedyny raz, kiedy napotkałem ten problem. Wszystkie inne wywołania AJAX są szybkie.

+1

Upewnij się, że używasz zmiennoprzecinkowych 'microtime (true)', inaczej robisz arytmetycznych na łańcuchach. Nie może to być rozwiązanie twojego problemu, ale coś, co możesz wziąć pod uwagę. –

+0

To rozwiązało! Spędziłem na tym dwie godziny. Czy mógłbyś opublikować swoją odpowiedź jako odpowiedź? Abyśmy mogli rozwiązać moje pytanie. Dziękuję Ci! – rationalboss

Odpowiedz

2

W sekcji PHP, upewnij się, że używasz microtime(true) tak, że pracujesz z zmiennoprzecinkowych numery zamiast ciągów. Użycie odejmowania na ciągach może dawać nieprawidłowe wyniki.


Przykład: http://ideone.com/FWkjF2

<?php 

// Wrong 
$start = microtime(); 
sleep(3); 
$stop = microtime(); 
echo ($stop - $start) . PHP_EOL; // Prints 8.000000000008E-5 

// Correct 
$start = microtime(true); 
sleep(3); 
$stop = microtime(true); 
echo ($stop - $start) . PHP_EOL; // Prints 3.0000791549683 

?> 
+1

... i teraz powraca 8 sekund! Dziękuję Ci! :) – rationalboss