是否可以知道Apache服务器加载PHP页面所花费的时间? Apache服务器内是否为Apache服务器下运行的每个页面生成了任何日志文件?
答案 0 :(得分:9)
我假设你想知道PHP生成页面需要多长时间。
当脚本启动时,从5.1开始,您可以使用$_SERVER
中的条目,称为REQUEST_TIME
。它包含请求开始的时间。在脚本结束时,您可以这样计算:
$time_taken = time() - $_SERVER['REQUEST_TIME'];
显然,这不是很准确,因此在PHP 5.4中引入了较新的REQUEST_TIME_FLOAT
:
$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起)。
答案 1 :(得分:2)
您可以尝试使用apache的日志格式,您可以在访问日志中记录以微秒为单位的时间(%D)。
http://httpd.apache.org/docs/current/mod/mod_log_config.html#formats
我从未尝试过它..
答案 2 :(得分:1)
您可以在代码开头打印当前时间戳,然后在结束时打印并从开始时间减去结束时间,以查看加载和运行数据的总时间
答案 3 :(得分:1)
您可以使用它来自己创建日志文件:
在头文件的顶部:
$process_start = date('H:i:s');
页脚文件中的
$process_end = date('H:i:s');
echo "<br/> process_start {$process_start}<br/> process_end {$process_end}"
不是最佳方式,但可能有效