最近公司需要把老的服务器进行置换迁移,在缩容容器的时候,突然想到项目中,很多常驻进程没有做信号处理,这样会导致容器停止的时候会直接kill进程,导致数据丢失或者逻辑中断的情况,于是使用了pcntl_signal,这里顺便记录下。

PHP5.3.0起支持pcntl_signal系列进程控制函数可以对信号进行安装、分发等操作。

一、信号处理函数

  • pcntl_signal():安装信号;
  • pcntl_signal_dispatch():分发信号;
  • pcntl_sigwaitinfo():等待信号;

二、信号类别

  • SIGTERM:信号触发命令:kill pid、kill -15 pid 、kill -SIGTERM等;
  • SIGINT:程序终止(interrupt)信号,通常由ctrl+c触发;
  • SIGHUP:挂断信号,通常父进程终止后向子进程组发送该信号;
  • SIGALRM:定时器信号;

更多信号类别,可以点击这里查看。

注:php不支持信号9和19,也就是SIGKILL、SIGSTOP不支持。

三、demo

<?php
//信号处理器
class Comm_Pcntl{public static $exit = false;//是否退出//安装信号public static function installSignal() {pcntl_signal(SIGUSR1, function($signal){self::$exit = true;});pcntl_signal(SIGTERM, function($signal){self::$exit = true;});}//分发信号public static function dispatchSignal() {pcntl_signal_dispatch();}
}

测试

<?phpComm_Pcntl::installSignal();//安装信号while (true) {Comm_Pcntl::dispatchSignal();if (Comm_Pcntl::$exit) {exit("信号退出");}}

使用上述代码,可以测试kill pid的时候,会输出“信号退出”

php: pcntl_signal信号处理相关推荐

  1. PHP进程退出信号_一文吃透 PHP 进程信号处理

    背景 前两周老大给安排了一个任务,写一个监听信号的包.因为我司的项目是运行在容器里边的,每次上线,需要重新打包镜像,然后启动.在重新打包之前,Dokcer会先给容器发送一个信号,然后等待一段超时时间( ...

  2. sigterm信号_一文吃透 PHP 进程信号处理

    背景 前两周老大给安排了一个任务,写一个监听信号的包.因为我司的项目是运行在容器里边的,每次上线,需要重新打包镜像,然后启动.在重新打包之前,Dokcer会先给容器发送一个信号,然后等待一段超时时间( ...

  3. GPU上的图像和信号处理

    GPU上的图像和信号处理 NVIDIA Performance Primitives(NPP)库提供GPU加速的图像,视频和信号处理功能,其执行速度比仅CPU实施快30倍.拥有5000多个用于图像和信 ...

  4. 广泛的信号处理链如何让语音助理“正常工作”

    广泛的信号处理链如何让语音助理"正常工作" How extensive signal processing chains make voice assistants 'just w ...

  5. 数字信号处理实验三用fft对信号作频谱分析_机器学习中的音频特征:理解Mel频谱图...

    如果你像我一样,试着理解mel的光谱图并不是一件容易的事.你读了一篇文章,却被引出了另一篇,又一篇,又一篇,没完没了.我希望这篇简短的文章能澄清一些困惑,并从头解释mel的光谱图. 信号 信号是一定量 ...

  6. 以SIGSEGV为例详解信号处理(与栈回溯)

    以SIGSEGV为例详解信号处理(与栈回溯) 信号是内核提供的向用户态进程发送信息的机制, 常见的有使用SIGUSR1唤醒用户进程执行子程序或发生段错误时使用SIGSEGV保存用户错误现场. 本文以S ...

  7. ECCV 2020 | 对损失信息进行建模,实现信号处理高保真还原

    编者按:信号在我们的日常生活中随处可见,例如:声音.图像.视频等.然而在信号的传输或存储过程中,往往会面临信号失真.质量变差等问题.今天这篇文章就来探讨一下信号处理中的信息丢失问题,其中包括微软亚洲研 ...

  8. python语音信号处理_现代语音信号处理笔记 (一)

    本系列笔记对胡航老师的现代语音信号处理这本书的语音处理部分进行总结,包含语音信号处理基础.语音信号分析.语音编码三部分.一开始以为三部分总结到一篇文章里就可以了,但写着写着发现事情并没有那么简单... ...

  9. 基于Matlab的声波信号处理,基于声卡和Matlab平台的语音信号增强处理系统

    第29卷第6期 V01.29 No.6 企业技术开发 TECHNOLOGICAL DEVELOPMENT 0F ENTERPRISE 2010年3月 Mar.2010 基于声卡和Matlab平台的语 ...

最新文章

  1. 划分VLAN将生成树协议中的阻塞端口设置为转发端口
  2. ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建
  3. 判断程序是否已经运行
  4. Virtual.Lab模拟钢板冲击声
  5. ROS入门-2.Linux系统基础操作
  6. 股票和基金,哪个适合打工族?
  7. java static int count,static int bitCount(long i)
  8. 黑马程序员python全套视频-python视频教程免费:求黑马程序员python教程?
  9. php获取微信uninoid_微信公众号如何根据unionid获取到openid?
  10. java图片处理,文字自动换行
  11. Blender Benchmark测试
  12. ctf比赛的方向及内容
  13. 致虚幻引擎社区的一封公开信(转)
  14. CentOS7 DNS配置一条龙全套服务
  15. 2020股票总结,1号仓库-3.37%,2号仓库-6.06%
  16. 动态代理—IOC框架
  17. mysql5.7版本怎么修改密码,mysql 5.7版本修改密码的简单方法
  18. 快速检测算法——Object detection at 200 Frames Per Second
  19. 查询本机ip地址快捷键
  20. 【Android Assimp】免积分 一步编译assimp(自己整合的编译工具)(内含已编译so库下载)

热门文章

  1. 百度西雅图开设AI实验室 总裁张亚勤称AI是时代变革之能
  2. “chmod 777-R 文件名”什么意思?
  3. GWAS研究和多基因评分
  4. 自定义注解,实现业务处理
  5. 微信小程序跳小程序short-link(#小程序://)
  6. 1.2 Eight Great Ideas in computer Architecture
  7. 854计算机专业基础,东华大学2019年考研854计算机及软件工程专业基础综合考试大纲...
  8. Occupancy Map(Occupancy Grid)的更新
  9. 如何把老旧笔记本变成一部 Chromebook
  10. wps表格保存html,网页中的数据怎么导入excel表格数据-怎么把网页数据导入到wps表格中...