idea shell 中的函数 跳转_PHP如何为函数执行设置超时?
(给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如何为函数执行设置超时?相关推荐
- Linux下在shell中使用curl模拟get,post请求访问接口并设置代理
在服用端做测试或查找问题的时候,难免要测试接口,测试接口最简单的方法就是利用shell的curl命令来模板get,post请求,每次都用,但是有些参数时间一长就记不清楚了,所以记录一下以备忘 curl ...
- shell中的执行流控制
shell中的执行流控制 1 for语句 1.1 作用及语句结构 1.2 for语句的基本格式 2 条件语句 2.1 while...do 2.2 until...do 2.3 if语句 2.4 ca ...
- sublime text实现函数跳转(window环境)
来源:http://jingyan.baidu.com/article/2c8c281dd67ab60008252af4.html sublime text是一个优美小巧的编辑器,但本身不具备函数跳转 ...
- shell中spawn什么意思_shell 编程-Expect
原标题:shell 编程-Expect No.1 expect的安装 [root@qfedu ~] yum -y install expect No.2 expect的语法-------通过expec ...
- idea shell 中的函数 跳转_SpringBoot项目打包+shell脚本部署实践,太有用了
本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...
- shell中的函数shell中的数组告警系统需求分析
2019独角兽企业重金招聘Python工程师标准>>> 20.16/20.17 shell中的函数 函数的概念 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用 ...
- shell中的函数及脚本调试方法
1.函数格式 目的:将一些相对对立的代码变成函数,提供可读性和重用性,避免重复编写相同代码. 函数格式: 函数关键字:function可以省略,可不带任何参数; 符号{表示函数体的开始(可在函数名后单 ...
- Linux Shell中的延时函数
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下 sleep 和 usleep 的区 ...
- linux脚本case语句,shell中的case语句,数组及函数
case示例 ---------------------------------------------------------------------- .. echo "case&quo ...
最新文章
- Dundas使用手册
- snmp Oid整理与运用
- php getimagesize图片宽高反了_PHP实现简单验证码识别
- OO实现ALV TABLE 三:ALV的功能设计
- 天题系列: Candy
- Google浏览器开发者工具:CSSViewer(一个Css查看器)
- 【Flink】FlinkException The file LOG does not exist on the TaskExecutor
- telnet 的使用(ping 与 telnet)
- inno setup安装之前关闭mysql_innosetup安装之前关闭进程
- c语言指针跨函数使用内存
- 微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路
- vector的几种初始化及赋值方式
- jpa的批量修改_jpa批量处理
- 跨系统如何保持Session存活和Token共享问题
- vue 如何做到图片预览
- 被曝欠薪又放长假,600亿科技巨头爆雷了
- 论文阅读(2) 使用DeepPIV揭示深海中神秘的粘液结构(2020)
- 一文带你了解外贸海关数据
- 一系列令人敬畏的.NET核心库,工具,框架和软件
- 台达canopen building_台达可编程控制器DVP-ES2/EX2/ES2-C系列介绍
热门文章
- 人类一败涂地电脑版_【游戏资讯】这是PC版塞尔达?终极无敌暴力缝合怪登陆Steam!PS3模拟器更新后可流畅运行美末!...
- VTK修炼之道49:图形基本操作进阶_网格平滑(点云的曲面重建技术)
- go语言中错误的处理和实现自己的错误处理类型
- 自学Springboot(一)
- C语言再学习 -- linux 压缩与解压缩含义
- 如何构建一个分布式爬虫:基础篇
- LSTM implementation explained
- @Transient不起作用的问题
- 【问链财经-区块链基础知识系列】 第三十八课 以太坊智能合约账户全解析
- 【问链财经-区块链基础知识系列】 第二十七课 区块链与分布式账本的异同