如果睡眠被计算为超时或类似的东西,这不是常见的问题之一。好的,问题来了:我已将 PHP 的 max_execution_time 设置为 15 秒,理想情况下,当它超过设置的限制时应该超时,但事实并非如此。更改 php.ini 文件后,Apache 已重新启动,并且 ini_get('max_execution_time') 一切正常。有时脚本运行长达 200 秒,这太疯狂了。我没有任何数据库通信。该脚本所做的只是在 unix 文件系统上查找文件,并且在某些情况下重定向到另一个 JSP 页面。脚本上没有 sleep() 。
我这样计算 PHP 脚本的总执行时间:
在我设置的脚本开始处:
$_mtime = microtime();
$_mtime = explode(" ",$_mtime);
$_mtime = $_mtime[1] + $_mtime[0];
$_gStartTime = $_mtime;
和结束时间($_gEndTime)的计算类似。
总时间是在我注册的关闭函数中计算的:
register_shutdown_function('shutdown');
.............
function shutdown()
{
..............
..............
$_total_time = $_gEndTime - $_gStartTime;
..............
switch (connection_status ())
{
case CONNECTION_NORMAL:
....
break;
....
case CONNECTION_TIMEOUT:
....
break;
......
}
}
注意:我不能使用 $_SERVER['REQUEST_TIME'] 因为我的 PHP 版本不兼容。这很糟糕——我知道。
1)好吧,我的第一个问题显然是为什么我的 PHP 脚本即使在设置的超时限制之后仍然执行?
2) Apache 有 300 秒的 Timeout 指令,但 PHP 二进制文件不读取 Apache 配置,这应该不是问题。
3) 是否有可能让 PHP 进入睡眠模式?
4)我是否以错误的方式计算执行时间?有一个更好的方法吗?
在这一点上我很难过。PHP 向导 - 请帮助。
编辑:我刚刚发现流操作不是一些日志的原因。即使没有执行流式操作,延迟在脚本中也是随机的。上下文切换可能就是原因。但我仍然没有明确的答案。我在 Linux 上查找了 PHP 的 Real max_execution_time, 但我不确定我是否想尝试一下。还有其他建议吗?