PHP信号处理机制的操作代码讲解


Posted in PHP onApril 19, 2019

我们首先来看下实例代码:

function sig_handler($sig)

{

  print("handled sig: $sig\n");

}

 

 

 

pcntl_signal(SIGIO,  "sig_handler");

posix_kill(posix_getpid(),SIGIO);

 

while(true)

{

  posix_kill(posix_getpid(),SIGIO);

 

  pcntl_signal_dispatch();

 

  sleep(1);

}

最好自己手动循环处理信号队列,而不是使用php提供的的declare(ticks=1),tick_handler()这种信号处理机制,因为tick机制的性能问题,每执行一条语句都回调tick_handler查看是否有信号,而很大部分时间是没有信号的。

posix_signal设置信号的回调处理,

posix_kill仅仅是把信号放入进程的信号待处理队列中,所有并不会触发信号回调,由pcntl_signal_dispatch处理信号队列中的信号

posix_getpwnam("nginx"):获取用户名的uid,gid等信息

pcntl_signal(SIGPIPE, SIG_IGN, false):忽略内核发来的SIGPIPE信号,当连接已closed,进程继续发数据到无效socket,系统会收到含RST 控制位TCP包,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。该信号的默认处理是终止进程,进程可以捕获它并忽略该信号以免不情愿的被终止。

socket上下文选项:

backlog:用于限制流监听队列中未完成连接的连接数量

so_reuseport:重用端口(由内核调度连接到多个监听同一个端口的进程,由于是通过hash方式来标志连接对应的进程,所以监听进程数是不能改变的,)

定时器信号处理

pcntl_signal(SIGALRM,"sig_handler");

pcntl_alarm(2);

function sig_handler($sig)

{

  echo "one second after";

}

while (1)

{

  pcntl_signal_dispatch();

  sleep(1);

}
PHP 相关文章推荐
浅谈PHP语法(1)
Oct 09 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
php比较相似字符串的方法
Jun 05 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
如何用PHP websocket实现网页实时聊天
May 26 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 #PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 #PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 #PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 #PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 #PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 #PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 #PHP
You might like
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
js+css在交互上的应用
2010/07/18 Javascript
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
使用python绘制温度变化雷达图
2019/10/18 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
新学期校长寄语
2014/01/18 职场文书
食品安全处置方案
2014/06/14 职场文书
自主招生英文自荐信
2015/03/25 职场文书
追讨欠款律师函
2015/05/27 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
TS 类型兼容教程示例详解
2022/09/23 Javascript