如何检测PHP脚本是否因为耗时过长而被终止
我怀疑我的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
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致命错误:最大执行时间。深入研究这个问题很有趣,但我认为这不是我问题的原因(因为这样的日志与症状无关)。