如何防止一个函数执行时间过长呢?在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();

  

原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。

这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。

最新文章

  1. JS高程4.变量,作用域和内存问题(3)垃圾收集
  2. URL-Short
  3. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
  4. LA4287--tarjan
  5. jQuery( )方法的构建原理
  6. 解决PyScripter中文乱码问题
  7. mysql-函数if多值多结果判断
  8. EmptyRecycle() 清空回收站
  9. jquery 操作select 语句大全
  10. N皇后回溯解法 leetcode N-Queens
  11. 算法库:jpeglib和pnglib安装配置
  12. MongoDB对应SQL语句
  13. LeetCode(52)-Remove Linked List Elements
  14. 佳文赏析:How to uninstall Linux
  15. Python基础(条件判断,循环,占位符等)
  16. CF698C - LRU
  17. sench touch 自定义小图标(转)
  18. 【C++】面试题目:从尾到头打印链表
  19. 4、CentOS6.5下安装php5.3
  20. spring jpa : 多条件查询

热门文章

  1. XE3随笔6:SuperObject 的 JSON 对象中还可以包含 "方法"
  2. 20145225《Java程序设计》 实验五 Java网络编程及安全
  3. iOS 线程锁同步机制
  4. [[4], [5, 6, 7]](Python)list的方法
  5. css之字体设置
  6. Java 第14章 字符串
  7. Win7(32/64)VS2010配置编译GDAL环境(图文教程+亲测可用!)
  8. Spring的定时任务配置2(转)
  9. jquery_easyui 相关问题
  10. 人脸识别经典算法一:特征脸方法(Eigenface)