2012-11-16 67 views
1

是否有可能知道Apache服務器加載PHP頁面所用的時間? Apache服務器中是否有任何在Apache服務器上運行的頁面生成日誌文件?在Apache服務器上加載php頁面的時間

+0

我會建議使用microtime中(); ..因爲你知道y .. – Dinesh

+0

沒有在這種情況下,我必須使用微型時間在用戶創建的每個php頁面。我想知道我可以檢查從任何日誌文件的Apache? –

回答

9

我打算假設你想知道PHP生成頁面需要多長時間。

腳本啓動時,由於5.1,還有在$_SERVER一個條目就可以使用,稱爲REQUEST_TIME。它包含請求開始的時間。在腳本結束時,你可以像這樣計算的話:

$time_taken = time() - $_SERVER['REQUEST_TIME']; 

顯然,這不是很準確,因此新REQUEST_TIME_FLOAT是PHP 5.4介紹:

$time_taken = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']; 

對於< 5.4你可以使用這個片段在腳本的開始向後兼容性:

if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) { 
    $_SERVER['REQUEST_TIME_FLOAT'] = microtime(true); 
} 

更新

爲了讓Apache爲您做到這一點,您可以添加%T和/或%D日誌格式選項,例如,

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined 

%T選項讓您登錄的秒數採取和%D記錄微秒(因爲Apache 2)。

參見:How long does it take to serve a request

1

你可以在你的代碼的起始打印當前時間戳,然後在最後打印出來,並從起始時間減去結束時間看到的總時間通過數據加載和運行

1

您可以使用這個創建日誌文件的自己:

在頭文件的頂部:

$process_start = date('H:i:s'); 

在頁腳文件

$process_end = date('H:i:s'); 
echo "<br/> process_start {$process_start}<br/> process_end {$process_end}" 

不是最好的方式,但可以工作

+2

這將工作,但它只是準確的第二。如果在記錄持續時間時需要小時,我會擔心。 ;-) – Alastair

相關問題