原生php如何实现master进程监听或者管理work进程超时的情况

mzss1123

需求是这样的,维护一个老版本的yii2框架中的进程管理器,需要加入超时kill和重试逻辑。但是看了部分文档,现在了解到alerm信号可以实现超时关闭,但是只能实现的是work进程自己发自己接受,有没有办法放到master进程进行超时管理?
今天有了解可以使用通道实现进程间的通信。具体的使用我的理解是创建个文件往里面写时间和超时时间,master取数据进行判断,然后kill掉子进程。
根据管道方法的话,现在有疑问如下:
(1)比如一个master,5个worker的情况下,文件需要创建几个?
(2)进程重启或者关闭后,文件是不是需要删除掉?
(3)管道的文件格式是只能用.pip结尾的么?里面的数据格式有什么需要注意的?
(4)有没有前辈探索过并且写过相关demo的,有个文章能看最好了。

638 1 0
1个回答

sunwenzheng

worker进程一般是常驻进程,一般来说是不用判断worker进程是否超时的,而是判断客户端连接上来的进程 connection 是否超时,一般这个是通过心跳包来实现的,如果客户端没有按照约定的时间间隔发送心跳包,则断开客户端的连接。

如果你是真的要求master下的每个worker进程都要有存活的时间限制,那么master进程里面得到存储的worker进程的pid,然后直接杀死就好了,不过worker进程杀死口,岂不是master进程下什么都没有了,那按照你的业务需求是不是master进程也要退出
你写的问题描述不太清楚,所以也不好给你提供什么解决方案。

如果你只是问进程间通讯的技术的话,你可用搜索php相关的共享内存,信号量,消息队列,匿名管道和socket 等资料

  • 暂无评论
年代过于久远,无法发表回答
🔝