2017-06-16 42 views
2

我正在爲我的ajax應用程序調試性能問題。php的等待時間頁面

Firefox開發人員工具顯示等待時間約爲3秒。

如果我嘗試通過getrusage()'ru_utime.tv_sec'和'ru_utime.tv_usec'來測量php腳本,我會在腳本開始時隨機獲取0.2到9秒,腳本開始和結束之間的差異大約爲0.07秒。

那麼我如何解釋這些結果呢? 這是否意味着PHP代碼本身運行0.07秒,其餘時間是爲SQL查詢等? (我真的有很多複雜的查詢在我的腳本)

或者是否意味着Apache或PHP解釋器之前執行實際的PHP代碼做些事情?

或者它可能不是服務器故障,但ajax和jQuery?

debian。 PHP版本是5.4,apache - 2.2,jquery 1.11。

Upd: 對不起,我忘了提及重要的信息 - 我從頁面運行多個Ajax請求。如果我單獨運行一個請求,等待時間是0.6秒。

+0

TTFB時代是否一致? –

+0

是的,我認爲TTFB是一致的。 「每個請求的開始時間+2.24請求開始時間」。 – Andrei

回答

1

你使用的是localhost嗎?如果這樣的機會會更慢。如果可以的話,升級到PHP 7可以大大提高速度。 Apache,如果你想要更好的性能,請換成nginx。 Apache就像一個4乘4,包含你需要的所有東西,nginx更像是一輛法拉利,並不是那麼多,但是它能夠滿足你的需求。

雖然沒關係,但jQuery現在在版本3上,您運行的是舊版本。

+0

Debian發行版和我的管理服務器的同事稍微保守。我懷疑我會得到最新的PHP(或MySQL 5.6.3+這將顯着提高我的查詢性能)任何時間:( – Andrei

+1

PHP 5.4是一個潛在的安全風險,它是生命的終結,已經超過一年了。如果他保守地拿出一份文件,就停留在PHP 5.4的風險和升級的好處提供建議,iirc 7使用的資源也比5.x少。 – Ian

0

因此,getrusage()只測量PHP代碼執行本身的時間。 如果我想測量查詢流等,我需要測量實時。

$GLOBALS["mymicrotime"] = microtime(true); 
//code here 
print_r(microtime(true) - $GLOBALS["mymicrotime"]); 

並行運行的腳本3秒鐘,而不是0.6秒,因爲某種在InterBase /火鳥查詢鎖定的。