2013-03-04 38 views
6

我有一個由JS通過JQuery的$.ajax加載的PHP腳本。JS和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); 

據測定某處小於1秒: 我使用測量的PHP腳本的執行時間。沒有前置/附加PHP腳本。

在JS $.ajax代碼,我已經通過測得的執行時間:

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

的時間是爲接收到的時間和處理時間相同。

但是,當我檢查Chrome開發人員工具時,它聲稱PHP腳本加載大約8秒

我如何衡量這些東西有什麼不對? 我確定PHP正在加載速度很快,但Chrome如何報告花了超過8秒?

我使用本地主機,我的網絡服務器速度很快,這是我唯一遇到這個問題的時間。所有其他AJAX調用都很快。

+1

確保您使用浮點'microtime中(真)',否則你對字符串做算術。可能不是解決您的問題的方法,但您可能需要注意一些問題。 – 2013-03-04 19:09:31

+0

解決了!我花了兩個小時。你可以發佈你的答案作爲答案嗎?這樣我們就可以解決我的問題。謝謝! – rationalboss 2013-03-04 19:11:19

回答

2

在PHP部分,確保你使用microtime(true),使你與浮點工作用數字代替。 在字符串上使用減法可能會產生不正確的結果。


例子: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

...現在它返回8秒!謝謝! :) – rationalboss 2013-03-04 19:18:10