Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测PHP脚本是否因为耗时过长而被终止_Php_Apache_Logging - Fatal编程技术网

如何检测PHP脚本是否因为耗时过长而被终止

如何检测PHP脚本是否因为耗时过长而被终止,php,apache,logging,Php,Apache,Logging,我怀疑我的PHP应用程序中的一些脚本处理时间太长,在max\u execution\u time之后被杀死。我已经学会了如何修改代码来解决这个问题(使用注册\关闭\功能),但在修改代码之前,由于代码有点难以复制,我想确定情况就是这样 我在Apache或PHP日志中没有找到任何内容,因此我想知道是否应该在PHP中配置一些内容来记录这些内容,或者在日志中查找什么内容。尝试比较以下脚本中的开始和结束时间戳: <?php // SET TIMEOUT TIME ini_set('max_exec

我怀疑我的PHP应用程序中的一些脚本处理时间太长,在
max\u execution\u time
之后被杀死。我已经学会了如何修改代码来解决这个问题(使用<代码>注册\关闭\功能),但在修改代码之前,由于代码有点难以复制,我想确定情况就是这样


我在Apache或PHP日志中没有找到任何内容,因此我想知道是否应该在PHP中配置一些内容来记录这些内容,或者在日志中查找什么内容。

尝试比较以下脚本中的开始和结束时间戳:

<?php

// SET TIMEOUT TIME
ini_set('max_execution_time', 10);

// SHUTDOWN CALLBACK
function shutdown(){

    // LOG END
    error_log("END: ".time());
}

// SET SHUTDOWN CALLBACK
register_shutdown_function('shutdown');

// LOG START
error_log("START: ".time());

// INFINITE LOOP
while(true){

    // CONTINUE
    continue;

}

?>


感谢您的想法,但这意味着修改代码并能够重现问题,而这并不简单(取决于服务器负载、传递给脚本的参数等)。我更愿意在日志中检测它。@MathieuDubois您可以检查PHP
错误日志,看看运行PHP脚本是否有超时。我非常确定,如果脚本超时,将显示一个日志。如果在堆栈中,可能还会显示fpm错误日志。正如我尝试提到的,我已经在我们的生产服务器上检查了它,但没有找到任何结果。它运行的是一个过时的PHP版本,所以这里可能有一些东西。我将尝试使用一个更简单的脚本来触发此类错误,以便在日志中跟踪它。@MathieuDubois可能会检查您的
php.ini
文件,查看您为
log\u errors
error\u log
属性配置了什么。我认为这会显示在错误日志中。我不确定你认为代码修改是什么,但是你可以在PHP.ini文件或.HTAccess文件中进行调整,而不必在技术上改变代码。默认值为30秒。我能够触发错误,并确保在这种情况下日志中存在
PHP致命错误:最大执行时间。深入研究这个问题很有趣,但我认为这不是我问题的原因(因为这样的日志与症状无关)。