Apache サーバーが PHP ページをロードするのにかかる時間を知ることはできますか? Apache サーバーで実行されているすべてのページに対して、Apache サーバー内で生成されるログ ファイルはありますか?
4 に答える
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
and/or %D
log format オプションを追加します。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined
この%T
オプションを使用すると、かかった秒数をログに%D
記録し、マイクロ秒をログに記録できます (Apache 2 以降)。
アクセスログにマイクロ秒単位でかかった時間 (%D) を記録できる apache のログ形式を試すことができます。
http://httpd.apache.org/docs/current/mod/mod_log_config.html#formats
試したことはないですが..
コードの先頭に現在のタイム スタンプを出力し、最後にそれを出力して、開始時刻から終了時刻を差し引くと、データの読み込みと実行にかかる合計時間を確認できます。
これを使用して、自分でログ ファイルを作成できます。
ヘッダーファイルの先頭に:
$process_start = date('H:i:s');
フッターファイルで
$process_end = date('H:i:s');
echo "<br/> process_start {$process_start}<br/> process_end {$process_end}"
最善の方法ではありませんが、うまくいくかもしれません