为PHP函数执行设置超时_PHP教程
程序员文章站
2022-05-28 11:19:04
...
如何防止一个函数执行时间过长呢?在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();
原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。
这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
推荐阅读
-
php set_time_limit(0) 设置程序执行时间的函数
-
php页面函数设置超时限制的方法
-
PHP递归调用数组值并用其执行指定函数的方法,递归数组_PHP教程
-
执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP教程
-
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)_PHP教程
-
PHP递归调用数组值并用其执行指定函数的方法_PHP教程
-
PHP实现的带超时功能get_headers函数,phpget_headers_PHP教程
-
浏览器关闭后,能继续执行的php函数(ignore_user_abort)_PHP教程
-
为你解读PHP realpath路径函数_PHP教程
-
为你详解PHP页面跳转函数的具体含义_PHP教程