加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 尝试,抓住并重试

发布时间:2020-12-13 14:04:32 所属栏目:PHP教程 来源:网络整理
导读:有时我的代码中断,这是我无法控制的 我将如何进行以下操作? try {//do my stuff}catch {//sleep and try again} 代码不是那么多,所以这是一个功能,所以我不想做和调用另一个功能,如果我不必 你可以尝试这样的: function exception_error_handler($errno,$e
有时我的代码中断,这是我无法控制的

我将如何进行以下操作?

try {
//do my stuff
}
catch {
//sleep and try again
}

代码不是那么多,所以这是一个功能,所以我不想做和调用另一个功能,如果我不必

你可以尝试这样的:
function exception_error_handler($errno,$errstr,$errfile,$errline ) {
    throw new ErrorException($errstr,$errno,$errline);
}
set_error_handler("exception_error_handler");

$NUM_OF_ATTEMPTS = 5;
$attempts = 0;

do {

    try
    {
        executeCode();
    } catch (Exception $e) {
        $attempts++;
        sleep(1);
        continue;
    }

    break;

} while($attempts < $NUM_OF_ATTEMPTS);

function executeCode(){
    echo "Hello world!";
}

在这里,我们执行一个do … while循环,以便至少执行一次代码.如果executeCode()函数遇到错误,它将抛出一个Exception,try … catch块将捕获. catch块然后将变量$尝试增加1,并调用continue继续测试下一次迭代的while条件.如果已经有五次尝试,循环将退出,脚本可以继续.如果没有错误,即catch块中的continue语句不执行,循环将中断,从而完成脚本.

注意使用从here获取的set_error_handler函数.我们这样做,以便捕获executeCode()函数中的所有错误,即使我们不自己手动抛出错误.

如果您认为您的代码可能会失败多次,那么sleep()函数在continue语句之前可能是有益的.降低可能无限循环的“下降”将有助于降低CPU使用率.

让脚本无限运行,直到成功,这不是一个好主意,因为循环前100次迭代中出现的错误不太可能被解决,从而导致脚本“冻结”.更重要的是,最好在错误的情况下重新评估您想要多次运行的代码,并改进它以正确处理任何出现错误的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读