如何防止一个函数执行时间过长呢?在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中文网!

更多相关文章

  1. PHP自动加载机制介绍——spl_autoload_register()函数,php类自动
  2. PHP二维数组按照指定的字段排序的函数
  3. PHP中 stripslashes() 函数 和 addslashes() 函数
  4. php利用mkdir()函数创建多级目录
  5. PHP最强大的随机字符串生成函数
  6. php 数组排序函数
  7. php三个函数、两种选择防止sql注入
  8. 非常实用的PHP常用函数汇总-加密解密、字符串操作、文件操作、SQ
  9. PHP array_search 和 in_array 函数效率问题

随机推荐

  1. Android TextView Marquee的应用实例详解
  2. Android keytool 生成证书MD5指纹
  3. Android 学习记录
  4. Android 应用指定浏览器开发实例
  5. android 圆环图形的实现
  6. Android视频方向为什么出现问题以及Andro
  7. Android 自定义标题栏(title栏)
  8. Android 中文API (66) —— BluetoothClass
  9. Android 音频播放
  10. Android -很全的android操作内容丰富