你可以尝试这样的:
原文链接:https://www.f2er.com/php/139759.htmlfunction 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次迭代中出现的错误不太可能被解决,从而导致脚本“冻结”.更重要的是,最好在错误的情况下重新评估您想要多次运行的代码,并改进它以正确处理任何出现错误的代码.