2013-03-04 1 views
6

Ho uno script PHP caricato da JS tramite JQuery's $.ajax. Ho misurato il tempo di esecuzione dello script PHP utilizzando:Tempo di caricamento incoerente per JS e 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); 

E 'misurato da qualche meno 1 secondo. Non ci sono script PHP anteporre/aggiungere.

Nel codice JS $.ajax, ho misurato il tempo di esecuzione da:

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'); 
} 

Il tempo è lo stesso per il tempo ricevuto e il tempo di calcolo.

Tuttavia, quando controllo gli Strumenti per sviluppatori di Chrome, , si afferma che lo script PHP è stato caricato per circa 8 secondi.

Cosa potrebbe esserci di sbagliato nel modo in cui ho misurato queste cose? Sono certo che PHP si sta caricando velocemente, ma come mai Chrome ha riferito che ci sono voluti più di 8 secondi?

Sto usando localhost e il mio server web è veloce e questa è l'unica volta che ho riscontrato questo problema. Tutte le altre chiamate AJAX sono veloci.

+1

assicurarsi che si sta utilizzando il punto (vero) '' floating microtime, altrimenti si sta facendo l'aritmetica sulle stringhe. Potrebbe non essere una soluzione al tuo problema, ma qualcosa che potresti voler prendere in considerazione. –

+0

Questo l'ha risolto! Ho passato due ore su questo. Potresti postare la tua risposta come risposta? In modo che possiamo risolvere la mia domanda. Grazie! – rationalboss

risposta

2

Nella sezione PHP, assicurarsi che si sta utilizzando microtime(true) in modo che si sta lavorando con virgola mobile numeri invece di stringhe. L'uso della sottrazione su stringhe può produrre risultati errati.


Esempio: 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

... e ora restituisce 8 secondi! Grazie! :) – rationalboss