PHP如何为函数执行设置超时-php教程

资源魔 37 0
若何避免一个函数执行工夫太长呢?正在PHP里能够用pcntl时钟旌旗灯号+异样来完成。

代码以下:

<?php
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();

原理是正在函数执行前先设定一个时钟旌旗灯号,假如函数的执行超越规则工夫,旌旗灯号会被触发,旌旗灯号解决函数会抛出一个异样,被外层代码捕捉。这样就跳出了原来函数的执行,接着执行上面的代码。假如函数正在规则的工夫内,时钟旌旗灯号没有会触发,正在函数完结后肃清时钟旌旗灯号,没有会有异样抛出。

更多PHP相干常识,请拜访PHP中文网!

以上就是PHP若何为函数执行设置超时的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 pcntl 时钟信号 异常

抱歉,评论功能暂时关闭!