(给PHP开发者加星标,提升PHP技能)

转自:韩天峰

http://rango.swoole.com/archives/64

如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。

代码如下:

<?php 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();

原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。

- EOF -

推荐阅读  点击标题可跳转

1、用 PHP 实现多线程编程

2、也许这样理解 HTTPS 更容易

3、PHP 8 性能怎么样?

看完本文有收获?请分享给更多人

关注「PHP开发者」加星标,提升PHP技能

点赞和在看就是最大的支持❤️

idea shell 中的函数 跳转_PHP如何为函数执行设置超时?相关推荐

  1. Linux下在shell中使用curl模拟get,post请求访问接口并设置代理

    在服用端做测试或查找问题的时候,难免要测试接口,测试接口最简单的方法就是利用shell的curl命令来模板get,post请求,每次都用,但是有些参数时间一长就记不清楚了,所以记录一下以备忘 curl ...

  2. shell中的执行流控制

    shell中的执行流控制 1 for语句 1.1 作用及语句结构 1.2 for语句的基本格式 2 条件语句 2.1 while...do 2.2 until...do 2.3 if语句 2.4 ca ...

  3. sublime text实现函数跳转(window环境)

    来源:http://jingyan.baidu.com/article/2c8c281dd67ab60008252af4.html sublime text是一个优美小巧的编辑器,但本身不具备函数跳转 ...

  4. shell中spawn什么意思_shell 编程-Expect

    原标题:shell 编程-Expect No.1 expect的安装 [root@qfedu ~] yum -y install expect No.2 expect的语法-------通过expec ...

  5. idea shell 中的函数 跳转_SpringBoot项目打包+shell脚本部署实践,太有用了

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  6. shell中的函数shell中的数组告警系统需求分析

    2019独角兽企业重金招聘Python工程师标准>>> 20.16/20.17 shell中的函数 函数的概念 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用 ...

  7. shell中的函数及脚本调试方法

    1.函数格式 目的:将一些相对对立的代码变成函数,提供可读性和重用性,避免重复编写相同代码. 函数格式: 函数关键字:function可以省略,可不带任何参数; 符号{表示函数体的开始(可在函数名后单 ...

  8. Linux Shell中的延时函数

    Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下  sleep 和 usleep 的区 ...

  9. linux脚本case语句,shell中的case语句,数组及函数

    case示例 ---------------------------------------------------------------------- .. echo "case&quo ...

最新文章

  1. Dundas使用手册
  2. snmp Oid整理与运用
  3. php getimagesize图片宽高反了_PHP实现简单验证码识别
  4. OO实现ALV TABLE 三:ALV的功能设计
  5. 天题系列: Candy
  6. Google浏览器开发者工具:CSSViewer(一个Css查看器)
  7. 【Flink】FlinkException The file LOG does not exist on the TaskExecutor
  8. telnet 的使用(ping 与 telnet)
  9. inno setup安装之前关闭mysql_innosetup安装之前关闭进程
  10. c语言指针跨函数使用内存
  11. 微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路
  12. vector的几种初始化及赋值方式
  13. jpa的批量修改_jpa批量处理
  14. 跨系统如何保持Session存活和Token共享问题
  15. vue 如何做到图片预览
  16. 被曝欠薪又放长假,600亿科技巨头爆雷了
  17. 论文阅读(2) 使用DeepPIV揭示深海中神秘的粘液结构(2020)
  18. 一文带你了解外贸海关数据
  19. 一系列令人敬畏的.NET核心库,工具,框架和软件
  20. 台达canopen building_台达可编程控制器DVP-ES2/EX2/ES2-C系列介绍

热门文章

  1. 人类一败涂地电脑版_【游戏资讯】这是PC版塞尔达?终极无敌暴力缝合怪登陆Steam!PS3模拟器更新后可流畅运行美末!...
  2. VTK修炼之道49:图形基本操作进阶_网格平滑(点云的曲面重建技术)
  3. go语言中错误的处理和实现自己的错误处理类型
  4. 自学Springboot(一)
  5. C语言再学习 -- linux 压缩与解压缩含义
  6. 如何构建一个分布式爬虫:基础篇
  7. LSTM implementation explained
  8. @Transient不起作用的问题
  9. 【问链财经-区块链基础知识系列】 第三十八课 以太坊智能合约账户全解析
  10. 【问链财经-区块链基础知识系列】 第二十七课 区块链与分布式账本的异同