喜有设定时限只有一个命令或仅有的功能,例如一个可能性:
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()函数并在全球范围运行,但它可以在本地进行复位。
默认为60秒的脚本允许运行的数量。 如果达到这一点,该脚本返回一个致命错误。 默认限制为30秒或,如果存在,在php.ini中定义的的max_execution_time值。
当被调用时,
set_time_limit(
重新开始从零超时计数器。 换句话说,如果超时是默认的30秒25秒到脚本执行一个调用,如参数或者set_time_limit(20)制成,该脚本将总共45秒运行超时之前。
我没有测试它,但你可以在本地设置它,当你离开复位
<?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当测定时间是真实的。
如果你想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
}
当然,“东西”,你做需要重复这样就可以在必要时随时查看您的经过时间和退出。
如果你想要一个任意函数的超时执行,并有控制返还给您,不支持。 如果你真的需要做到这一点,工程师作为一个单独的进程。 然后,如果它似乎是时间太长,你可以关闭过程。
$endtime=time()+10;
while(time()!=$endtime){
echo ".";
}
不,这是不可能的: max_execution_time
被用作一种安全措施,以避免婴儿车的脚本(例如无限循环)破坏所述服务器; 但它并不打算一个功能单元的基础上工作。
而且它有致命错误最终的事实是definitly并非使用者不错反正...
我使用exec来运行shell脚本生成从外部应用程序导出。 如果脚本运行时间过长,达到的max_execution_time和用户永远不会知道发生了什么。 限制这种功能会帮助我确定是否结束近,发送一些用户友好的错误。
我不认为这是可能的,但为什么要这么做? 如果脚本曾经被中断我可能不会想得到你想要它。 这应该是更喜欢从自己的保护(以防万一你上传一个无限循环或东西,将需要几个小时),但如果你的脚本需要大量的时间,您应该给它,它需要时间,或改变脚本使其运行速度更快(对于某些crons其确定需要一段时间,但如果那个叫往往一个正常的脚本需要更多的,则默认的时间限制,你可能会面临一些严重的性能问题)