gpt4 book ai didi

PHP max_execution_time 没有超时

转载 作者:可可西里 更新时间:2023-11-01 13:55:34 25 4
gpt4 key购买 nike

如果 sleep 被计入超时或类似问题,这不是常见问题之一。好的,这就是问题所在:我已经将 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 秒的超时指令,但 PHP 二进制文件不读取 Apache 配置,这应该不是问题。
3) 是否有可能是某些东西使 PHP 进入休眠模式?
4)我是否以错误的方式计算了执行时间?有更好的方法吗?


我在这一点上被难住了。 PHP 向导 - 请帮助。

编辑:我刚刚发现流操作不是一些日志的原因。即使没有执行流操作,延迟在脚本中也是随机的。上下文切换可能只是原因。但我仍然没有一个明确的答案。我查了一下Real max_execution_time for PHP on linux但我不确定我是否想尝试一下。还有其他建议吗?

最佳答案

max_execution_time 仅限制脚本 本身的执行时间 - 脚本的 cpu 时间。如果操作系统上下文切换到另一个进程并在那里花费了一些时间,它也不会被计算在内。因此,测量真实世界的时间并期望 30 秒后超时在任何给定时间都不会成立。当然,它也忽略任何 systemexec 或网络时间

关于PHP max_execution_time 没有超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com