[转载]PHP如何为函数执行设置超时

jackxiang 2013-1-20 17:01 | |
如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。
代码如下:

root@192.168.137.158:~/php/swoole_study_codes# php timeout.php
PHP Exception:   in /root/php/swoole_study_codes/timeout.php on line 19
PHP Stack trace:
PHP   1. {main}() /root/php/swoole_study_codes/timeout.php:0
PHP   2. a() /root/php/swoole_study_codes/timeout.php:26
PHP   3. sig() /root/php/swoole_study_codes/timeout.php:5
timeout
Stop
a finishi
Stop

     原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
来源自rango兄弟的博客:http://swoole.sinaapp.com/archives/64

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/5955/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-1-20 17:04
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]