【问题标题】:Loading time of php page in apache serverapache服务器中php页面的加载时间
【发布时间】:2012-11-16 06:10:50
【问题描述】:

是否可以知道 Apache 服务器加载 PHP 页面所花费的时间?在 Apache 服务器下运行的每个页面是否都会在 Apache 服务器内部生成任何日志文件?

【问题讨论】:

  • 我建议使用 microtime(); ..因为你知道你..
  • 不,在这种情况下,我必须在用户创建的每个 php 页面中使用微时间。我想知道我可以从 apache 的任何日志文件中检查它吗?

标签: php apache


【解决方案1】:

我假设您想知道 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'];

对于

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

【讨论】:

    【解决方案2】:

    您可以尝试 apache 的日志格式,您可以在访问日志中记录所花费的时间 (%D)(以微秒为单位)。

    http://httpd.apache.org/docs/current/mod/mod_log_config.html#formats

    虽然我从来没有尝试过..

    【讨论】:

      【解决方案3】:

      您可以在代码开头打印当前时间戳,然后在末尾打印并从开始时间减去结束时间,以查看加载和运行数据的总时间

      【讨论】:

        【解决方案4】:

        您可以使用它自己创建日志文件:

        在头文件的顶部:

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

        在页脚文件中

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

        不是最好的方法,但可能有效

        【讨论】:

        • 这可行,但只能精确到秒。我担心在记录持续时间时是否需要一个小时。 ;-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多