PHP如何为函数执行设置超时

互联网 19-10-15
如何防止一个函数执行时间过长呢?在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如何为函数执行设置超时的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 异常
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:PHP+Swoole的闭包写法

相关资讯