好好学习,天天向上,物理好资源网(原物理ok网)欢迎您!
当前位置:首页 > > 教育资讯 > 内容页

PHP怎么高贵的处理讯号?看完这篇文章你就晓得了

2023-10-12 07:09:24教育资讯45

PHP进程间通讯的另外一个手段就是通过讯号来在进程间传递信息。讯号是一种系统调用,一般我们用的kill命令就是发送某个讯号给某个进程的。qPG物理好资源网(原物理ok网)

在开发服务器端守护进程方面,讯号处理至关重要。PHP的pcntl扩充提供了讯号处理的功能,借助它可以让PHP来接管讯号的处理。qPG物理好资源网(原物理ok网)

明天,我们就来给你们讲一讲PHP中的讯号处理。qPG物理好资源网(原物理ok网)

哪些是讯号?qPG物理好资源网(原物理ok网)

讯号是风波发生时对进程的通知机制,有时又称为软件中断。一个进程可以向另一个进程发送讯号,例如子进程结束时就会向父进程发送一个(17号讯号)来通知父进程信号与信息处理,所以有时讯号也被当成一种进程间通讯的机制。qPG物理好资源网(原物理ok网)

讯号的形成是有多种方法的,下边是常见的几种:qPG物理好资源网(原物理ok网)

●键盘上按个别组合键,例如Ctrl+C或则Ctrl+D等,会形成讯号。qPG物理好资源网(原物理ok网)

●使用posixkill调用,可以向某个进程发送指定的讯号。qPG物理好资源网(原物理ok网)

●远程ssh终端情况下,假如你在服务器上执行了一个阻塞的脚本,正在阻塞过程中你关掉了终端,可能还会形成讯号。qPG物理好资源网(原物理ok网)

信号处理是什么_信号处理信息包括_信号与信息处理qPG物理好资源网(原物理ok网)

●硬件也会形成讯号,例如OOM了或则遇见除0这些情况,硬件也会向进程发送特定讯号。qPG物理好资源网(原物理ok网)

而进程在收到讯号后,可以有如下三种响应:qPG物理好资源网(原物理ok网)

●直接忽视,不做任何反映。就是俗名的完全不鸟。并且有两种讯号,永远不会被忽视,一个是,另一个是,由于这两个进程提供了向内核最后的可靠的结束进程的办法。qPG物理好资源网(原物理ok网)

●捕捉讯号并做出相应的一些反应,具体响应哪些可以由用户自己通过程序自定义。qPG物理好资源网(原物理ok网)

●系统默认响应。大多数进程在碰到讯号后,假如用户也没有自定义响应,这么都会采取系统默认响应,大多数的系统默认响应就是中止进程。qPG物理好资源网(原物理ok网)

PHP讯号处理案例qPG物理好资源网(原物理ok网)

我们在FPM模式下写代码,不会碰到讯号处理相关的问题,而且CLI模式下一些常驻显存的脚本,怎么还能自由的重启、关闭、退出前做一些清除工作(断掉链接,删掉临时文件等)?qPG物理好资源网(原物理ok网)

是PHP的讯号处理注册方式,这个是pcntl初始化的时侯,将h注册为tick的处理函数。qPG物理好资源网(原物理ok网)

会将处理函数放在讯号集合中(PHP的hashtable),而最终会调用进行底层的讯号管理。qPG物理好资源网(原物理ok网)

这儿我省略了大量代码,将关键的点标记了下来,虽然PHP维护一个自己的讯号集合,每每调用h时才会查询是否有讯号信号与信息处理,里面的会将讯号阻塞,这样只有我们把关键的代码执行完毕以后,再去触发讯号处理函数以保证数据和程序逻辑的完整性。qPG物理好资源网(原物理ok网)

PHP怎么高贵的处理讯号qPG物理好资源网(原物理ok网)

常常看到身边的程序员们,每每须要重启PHP-FPM进程的时侯,使用的招式是kill掉所有PHP进程,之后新启动。通常情况没啥问题,但有些时侯可能某个进程的任务还没执行完,直接把人家中断了略显粗鲁。qPG物理好资源网(原物理ok网)

虽然只要你给PHP的进程发送一条USR2讯号,它便会再处理完所有任务后,重启子进程,这才是所谓的高贵~qPG物理好资源网(原物理ok网)

以上图为例,假如我们想让进程高贵退出的时侯,只须要发送讯号即可。须要注意的是和讯号会略过讯号阻塞会将进程直接停止,还有就是讯号会中断睡眠(SLEEP),sleep倘若没执行完会返回剩下的秒数。qPG物理好资源网(原物理ok网)

讯号相关的知识点虽然有好多,还须要你们在平常的使用中继续深入研究。以上就是这篇文章的全部内容,希望能对你们有所帮助。qPG物理好资源网(原物理ok网)