您好,有没有可能只对一个命令或一个函数设置时间限制,例如:
function doSomething()
{
//..code here..
function1();
//.. some code here..
}
我只想为 function1 设置时间限制。
存在 set_time_limit 但我认为这会设置整个脚本的时间限制。有人有什么想法吗?
原文由 Granit 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您希望 function1 在时间限制结束时返回,则需要自己编写代码。
function doStuff($seconds)
{
$finish=time()+$seconds;
$done=false;
$timeout=false;
while (!$done && !$timeout)
{
//do stuff here, set $done to true if you complete
//out of time?
$timeout=time() >= $finish;
}
return $done; //let caller know if we completed
}
当然,您所做的“事情”需要反复进行,以便您可以不断检查已用时间并在必要时退出。
如果您想超时执行任意函数并将控制权返回给您,则不支持。如果您确实需要这样做,请将其设计为一个单独的过程。然后,如果它看起来花费的时间太长,您可以关闭该过程。
原文由 Paul Dixon 发布,翻译遵循 CC BY-SA 2.5 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
1 回答1.2k 阅读
set_time_limit() 确实在全局运行,但可以在本地重置。
我没有测试过,但你可以在本地设置,离开时重置
set_time_limit
() … 在确定最长时间时,不包括在脚本执行之外发生的活动所花费的任何时间,例如使用 system() 的系统调用、流操作、数据库查询等该脚本一直在运行。在测量时间是真实的 Windows 上,情况并非如此。