限制函数或命令 PHP 的执行时间
嗨,是否可以仅对命令或仅对函数设置时间限制,例如:
function doSomething()
{
//..code here..
function1();
//.. some code here..
}
我只想将时间限制设置为函数1。
有退出set_time_limit但我认为这为整个脚本设置了时间限制。有人有什么想法吗?
嗨,是否可以仅对命令或仅对函数设置时间限制,例如:
function doSomething()
{
//..code here..
function1();
//.. some code here..
}
我只想将时间限制设置为函数1。
有退出set_time_limit但我认为这为整个脚本设置了时间限制。有人有什么想法吗?
set_time_limit() 确实全局运行,但可以在本地重置。
设置允许脚本运行的秒数。如果达到此值,脚本将返回致命错误。默认限制为 30 秒,或者,如果存在,则在 php.ini 中定义的max_execution_time值。
调用时,) 从零重新启动超时计数器。换句话说,如果超时是默认的 30 秒,并且在脚本执行 25 秒后进行set_time_limit(20) 等调用,则脚本将在超时之前总共运行 45 秒。
set_time_limit(
我还没有测试过它,但你可以在本地设置它,当你离开
<?php
set_time_limit(0); // global setting
function doStuff()
{
set_time_limit(10); // limit this function
// stuff
set_time_limit(10); // give ourselves another 10 seconds if we want
// stuff
set_time_limit(0); // the rest of the file can run forever
}
// ....
sleep(900);
// ....
doStuff(); // only has 10 secs to run
// ....
sleep(900);
// ....
set_time_limit
() ...在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动(如使用 system() 的系统调用、流操作、数据库查询等)上花费的任何时间。在测量的时间是真实的Windows上,情况并非如此。
如果您希望函数 1 在时间限制结束时返回,则需要自己编写代码。
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
}
当然,你所做的“事情”需要迭代,这样你就可以继续检查你经过的时间,并在必要时退出。
如果要超时执行任意函数并将控制权返回给您,则不支持。如果您确实需要这样做,请将其设计为一个单独的过程。然后,如果该过程似乎花费太长时间,则可以关闭该过程。