首页 > 后端开发 > php教程 > 为PHP函数执行设置超时_PHP教程

为PHP函数执行设置超时_PHP教程

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-07-20 11:15:42
原创
927 人浏览过

如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。

代码如下:

declare(ticks = 1);
    function a(){
    sleep(10);
    echo "a finishi\n";
}
function b(){
    echo "Stop\n";
}
function c(){
    usleep(100000);
}

function sig(){
    throw new Exception;
}

try{
    pcntl_alarm(1);
    pcntl_signal(SIGALRM, "sig");
    a();
    pcntl_alarm(0);
}catch(Exception $e){
    echo "timeout\n";
}

b();
a();
b();
登录后复制

  

原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。

这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440158.htmlTechArticle如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。 代码如下: declare(ticks = 1); function a(){ sleep(10); echo "a finishi\...
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
&运算时结果为何为假
来自于 1970-01-01 08:00:00
0
0
0
aCopy === arr; 为什么为false?
来自于 1970-01-01 08:00:00
0
0
0
请问为什么$_SESSION['Price']的值一直为0?
来自于 1970-01-01 08:00:00
0
0
0
为什么thinkphp比laravel性能好?
来自于 1970-01-01 08:00:00
0
0
0
为啥不用HBuilder?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板