需求是這樣的,維護一個老版本的yii2框架中的進程管理器,需要加入超時kill和重試邏輯。但是看了部分文檔,現(xiàn)在了解到alerm信號可以實現(xiàn)超時關閉,但是只能實現(xiàn)的是work進程自己發(fā)自己接受,有沒有辦法放到master進程進行超時管理?
今天有了解可以使用通道實現(xiàn)進程間的通信。具體的使用我的理解是創(chuàng)建個文件往里面寫時間和超時時間,master取數(shù)據(jù)進行判斷,然后kill掉子進程。
根據(jù)管道方法的話,現(xiàn)在有疑問如下:
(1)比如一個master,5個worker的情況下,文件需要創(chuàng)建幾個?
(2)進程重啟或者關閉后,文件是不是需要刪除掉?
(3)管道的文件格式是只能用.pip結尾的么?里面的數(shù)據(jù)格式有什么需要注意的?
(4)有沒有前輩探索過并且寫過相關demo的,有個文章能看最好了。
worker進程一般是常駐進程,一般來說是不用判斷worker進程是否超時的,而是判斷客戶端連接上來的進程 connection 是否超時,一般這個是通過心跳包來實現(xiàn)的,如果客戶端沒有按照約定的時間間隔發(fā)送心跳包,則斷開客戶端的連接。
如果你是真的要求master下的每個worker進程都要有存活的時間限制,那么master進程里面得到存儲的worker進程的pid,然后直接殺死就好了,不過worker進程殺死口,豈不是master進程下什么都沒有了,那按照你的業(yè)務需求是不是master進程也要退出
你寫的問題描述不太清楚,所以也不好給你提供什么解決方案。
如果你只是問進程間通訊的技術的話,你可用搜索php相關的共享內(nèi)存,信號量,消息隊列,匿名管道和socket 等資料