的功能或命令PHP的限制执行时间(Limit execution time of an functi

2019-06-17 14:11发布

喜有设定时限只有一个命令或仅有的功能,例如一个可能性:

function doSomething()
{
    //..code here..

    function1();

    //.. some code here..

}

我想时间限制设置为仅功能1。

有退出的set_time_limit但我觉得这个设置时间限制整个脚本。 有谁知道?

Answer 1:

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当测定时间是真实的。



Answer 2:

如果你想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
}

当然,“东西”,你做需要重复这样就可以在必要时随时查看您的经过时间和退出。

如果你想要一个任意函数的超时执行,并有控制返还给您,不支持。 如果你真的需要做到这一点,工程师作为一个单独的进程。 然后,如果它似乎是时间太长,你可以关闭过程。



Answer 3:

$endtime=time()+10;

while(time()!=$endtime){

    echo ".";
}


Answer 4:

不,这是不可能的: max_execution_time被用作一种安全措施,以避免婴儿车的脚本(例如无限循环)破坏所述服务器; 但它并不打算一个功能单元的基础上工作。

而且它有致命错误最终的事实是definitly并非使用者不错反正...



Answer 5:

我使用exec来运行shell脚本生成从外部应用程序导出。 如果脚本运行时间过长,达到的max_execution_time和用户永远不会知道发生了什么。 限制这种功能会帮助我确定是否结束近,发送一些用户友好的错误。



Answer 6:

我不认为这是可能的,但为什么要这么做? 如果脚本曾经被中断我可能不会想得到你想要它。 这应该是更喜欢从自己的保护(以防万一你上传一个无限循环或东西,将需要几个小时),但如果你的脚本需要大量的时间,您应该给它,它需要时间,或改变脚本使其运行速度更快(对于某些crons其确定需要一段时间,但如果那个叫往往一个正常的脚本需要更多的,则默认的时间限制,你可能会面临一些严重的性能问题)



文章来源: Limit execution time of an function or command PHP