PHP如何为函数执行设置超时
16lz
2021-01-22
如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。
代码如下:
<?phpdeclare(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自动加载机制介绍——spl_autoload_register()函数,php类自动
- PHP二维数组按照指定的字段排序的函数
- PHP中 stripslashes() 函数 和 addslashes() 函数
- php利用mkdir()函数创建多级目录
- PHP最强大的随机字符串生成函数
- php 数组排序函数
- php三个函数、两种选择防止sql注入
- 非常实用的PHP常用函数汇总-加密解密、字符串操作、文件操作、SQ
- PHP array_search 和 in_array 函数效率问题