目的:主要测试pcntl_alarm的功能

测试代码一

declare(ticks = 1);

function signal_handler($signal) {

print "catch you ";

pcntl_alarm(5);

}

pcntl_signal(SIGALRM, "signal_handler", true);

pcntl_alarm(5);

while(1) {

}

?>

正确代码,证实每次pcntl_alarm预定一个计时器,然后当计时器到时间的时候,就会给当前进程触发SIGALRM信号

测试代码二

declare(ticks = 1);

function signal_handler($signal) {

print "catch you ";

// pcntl_alarm(5);

}

pcntl_signal(SIGALRM, "signal_handler", true);

pcntl_alarm(5);

while(1) {

}

?>

注释掉触发函数中的信号计时器,我们发现信号只触发了一次,这就说明pcntl_alarm只会一次触发

测试代码三

declare(ticks = 1);

function signal_handler($signal) {

print "catch you ";

// pcntl_alarm(5);

}

pcntl_signal(SIGALRM, "signal_handler", true);

pcntl_alarm(5);

sleep(100);

将while循环换成sleep,发现在5秒的时候信号触发,程序结束,这是为什么呢,对应手册中提到的注意点,pcntl_alarm信号会提前结束掉sleep()函数

测试代码四

之前发过文章说过declare和pcntl_signal_dispatch两个函数的区别,那么这里用后面一个函数实现呢?

function signal_handler($signal) {

print "Caught SIGALRM ";

pcntl_alarm(5);

}

pcntl_signal(SIGALRM, "signal_handler", true);

pcntl_alarm(5);

for(;;) {

sleep(100);

pcntl_signal_dispatch();

}

?>

这里我用到了一个特性 第一个特性就是sleep和SIGALRM信号之间的关系

其实你看可以去掉sleep,但是这样dispatch函数调用就太频繁,会对系统造成压力

php pcntl_alarm,pcntl_alarm定时闹钟信号详解相关推荐

  1. Android自定义定时闹钟开发详解

    这篇文章主要为大家详细介绍了Android自定义定时闹钟开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Android开发之自定义闹钟实现,供大 ...

  2. 11.定时任务定时线程池详解

    3.1 新增定时任务池 11.定时任务&定时线程池详解 ​ 当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下Schedu ...

  3. mysql数据库定点任务_MySQL数据库Event定时执行任务详解

    一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...

  4. Java定时任务调度工具详解之Timer篇

    Java定时任务调度工具详解之Timer篇 https://segmentfault.com/a/1190000009542398

  5. signal信号详解

    signal信号详解本文引用其它网站. 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断.从它的命名可以看出,它的实质和使用很象中断.所以,信号可以说是进程控制的一部分 ...

  6. SIGPIPE信号详解

    SIGPIPE信号详解 当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进 ...

  7. Linux信号详解:signal与sigaction函数【2】

    我们已经讨论了Linux操作系统中"信号"."中断"."僵尸进程"'等重要概念.结合C语言中的setjmp.longjump.sigsetj ...

  8. 轮毂电机光电增量编码器的ABZ信号详解

    轮毂电机ABZ信号详解. 轮毂电机的定位使用了霍尔信号和光电增量编码器,1024线的.也就意味着,轮子转一圈,A信号和B信号各有1024个高电平和低电平. 实际应用中,我们将A/B信号的上升沿和下降沿 ...

  9. ASUS笔记本电路信号详解

    ASUS笔记本电路信号详解 BATSEL_2P#:EC通过SM总线得知电池电量信息后,发出BATSEL_2P#信号,给充放电芯片,控制充电电流(控制ICTL).  BATSEL_3S#:EC通过SM总 ...

  10. SIGPIPE信号详解及

    SIGPIPE信号详解 当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进 ...

最新文章

  1. php 5.4 iis6,WIN2003+IIS6+FastCGI+PHP5.4的安装配置
  2. 一文带你入门图论和网络分析(附Python代码)
  3. mysql-python 安装错误: Cannot open include file: 'config-win.h': No such file or directory
  4. ListView 滑动的时候 变系统默认黑色,或是设置不变色
  5. hadoop官方文档_hadoop体系简介
  6. kali linux超级用户_如何优雅的在Linux上使用Powershell]
  7. 骆驼能站在鸡蛋上吗!?
  8. 开启linux ssh
  9. 字符串在Python中的本质是一个序列。 数字类型不是序列,不是可迭代对象,只能看做一个整体不可分割...
  10. 快手二面:@Component,@Service等注解是如何被解析的?
  11. Java中静态代码块、构造代码块的区别
  12. 【自我解析】2020年华为杯数学建模比赛E题
  13. 不用for循环快速合并txt文本文件
  14. python数据拟合方法_Python-最小二乘法曲线拟合【转载】
  15. windows7启动出现0xc000014c错误代码解决办法
  16. oracle中的取余函数MOD
  17. React实现微信扫码支付
  18. LVGL学习——初识动画 lv_anim_t
  19. weibo4j中用到的mysql2bean的java工具
  20. 无线充电宝当无线充电器哪个品牌好?快充无线充电宝推荐

热门文章

  1. 关于近日番茄花园洪磊被拘之事的一些个人看法
  2. 阿里架构大牛说:JVM从入门到入魔,就是这么简单
  3. 电影光盘的vob格式视频如何转换成mp4格式
  4. 分布式ID生成算法——雪花算法
  5. 邮件营销和网络广告的价值
  6. VMware安装Ubuntu 21.10
  7. js月份的计算公式_JavaScript getMonth() 方法
  8. Re27:读论文 LADAN Distinguish Confusing Law Articles for Legal Judgment Prediction
  9. 电信宽带连接数限制的一个坑
  10. Alibaba Cloud Linux 搭建Frp内网穿透服务(兼容Centos)