如果将睡眠计算为超时或类似的东西,这不是常规问题之一.好的,这就是问题所在:我已经将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;
Run Code Online (Sandbox Code Playgroud)
并且类似地计算结束时间($ _ gEndTime).
总时间是在我注册的关机功能中计算出来的:
register_shutdown_function('shutdown');
.............
function shutdown()
{
..............
..............
$_total_time = $_gEndTime - $_gStartTime;
..............
switch (connection_status ())
{
case CONNECTION_NORMAL:
....
break;
....
case CONNECTION_TIMEOUT:
....
break;
......
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我不能使用$ _SERVER ['REQUEST_TIME']因为我的PHP版本不兼容.那很糟糕 - 我知道.
1)嗯,我的第一个问题显然是为什么我的PHP脚本甚至在设置超时限制后仍然执行?
2)Apache具有300秒的Timeout指令,但PHP二进制文件不读取Apache配置,这应该不是问题.
3)是否有可能将PHP发送到睡眠模式?
4)我是否以错误的方式计算执行时间?有一个更好的方法吗?
我在这一点上很难过.PHP向导 - 请帮忙.
编辑:我刚刚发现流操作不是几个日志的原因.即使没有执行流操作,延迟在脚本中也是随机的.上下文切换可能就是原因.但我仍然没有明确的答案.我在Linux上查找了PHP的max max_execution_time, 但我不确定我是否想尝试一下.还有其他建议吗?