2013-03-04 7 views
6

Ich habe ein PHP-Skript von JS über JQuery $.ajax geladen. I gemessen, um die Ausführungszeit des PHP-Skript:Inkonsistente Ladezeit für JS und 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); 

Es gemessen irgendwo weniger als 1 Sekunde. Es gibt keine PHP-Skripte vorhängen/anhängen.

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

Die Zeit, das gleiche für die Zeit empfangen wird, und die verarbeiteten Zeit:

Im JS $.ajax Code habe ich die Ausführungszeit durch gemessen.

Allerdings, wenn ich die Chrome Developer Tools, überprüfen behauptet, dass das PHP-Skript für ca. 8 Sekunden geladen.

Was könnte falsch daran sein, wie ich diese Dinge gemessen habe? Ich bin sicher, dass PHP schnell geladen wird, aber warum meldet Chrome, dass es mehr als 8 Sekunden gedauert hat?

Ich benutze localhost und mein Webserver ist schnell und das ist das einzige Mal, dass ich auf dieses Problem stieß. Alle anderen AJAX-Anrufe sind schnell.

+1

Stellen Sie sicher, Sie verwenden Floating Point 'micro (true)', sonst sind Sie Arithmetik auf Strings zu tun. Möglicherweise keine Lösung für Ihr Problem, aber etwas, das Sie beachten möchten. –

+0

Das hat es gelöst! Ich habe zwei Stunden damit verbracht. Könnten Sie Ihre Antwort als Antwort posten? Damit wir meine Frage lösen können. Vielen Dank! – rationalboss

Antwort

2

In der PHP-Abschnitt, stellen Sie sicher, dass Sie microtime(true) verwenden, so dass Sie mit Gleitkomma Zahlen statt Strings arbeiten. Die Verwendung der Subtraktion für Strings kann zu falschen Ergebnissen führen.


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

... und es gibt jetzt 8 Sekunden zurück! Vielen Dank! :) – rationalboss