聊聊swoole或者php cli 程序如何熱重啟

2021-10-08 09:56:19 字數 672 閱讀 6086

在討論這個話題之前,需要了解一下linux的訊號,在linux中發起乙個訊號最常用的函式莫過於kill了,如 kill -sigusr1 pid、kill -9 pid 、kill -sigterm pid 等等。這些都屬於軟中斷

程序在收到這些訊號之後,預設的處理行為,就是不管三七二十一直接退出程序,  這時候如果程序正在處理業務資料,那麼不好意思,直接就沒了。所以該怎麼處理呢?

註冊訊號處理函式,去攔截監聽程序收到的訊號,改變程序預設的處理行為

在業務層**,做乙個標記狀態,當狀態為可退出時,直接exit

下面用php模擬實現

<?php

$running = true;

pcntl_signal(sigterm, function () use (&$running) );

while ($running)

/** * 當程序收到sigterm訊號時(即:stop),**邏輯可能執行到step.1 ~ step.6之間的任何一處。收到 信

* 號之後立即改變$running= false,此時不直接exit,保證本輪while迴圈跑完,到下一輪while的時候

* $running= false,while迴圈退出, 程序就安全退出了

*/

swoole多程序任務

swoole發展很快版本迭代也很快,是彌補了php的缺點,提公升了php的效能,唯一的不足就是文件太差了點,很多想入門的人在官方文件並不能夠順利的進行學習。我也是開始研究swoole的一些知識,下面是總結的swoole多程序的一些知識點。swoole多程序例子1 單程序傳送10封郵件 start t...

程序執行緒及swoole程序模型

程序和執行緒,涉及到作業系統的基本知識,但是很多人都是不懂的,因為php簡單易學,大部分人在零基礎學 php程式設計的時候都沒有去了解這些,在學習 swoole 之前必須要了解程序執行緒這樣我們才能對 swoole 的執行機制有一定的了解,更易於開發。這是阮一峰所寫的乙個解釋,寫的非常不錯。1 計算...

php cli模式下獲取程序ID和設定程序名稱

建立檔案ci.php 內容如下 得到當前程序id 函式 posix getpid echo 當前pid posix getpid while true 開啟乙個ssh視窗進行測試 root bj 39 tmp php cl.php 當前 8274開啟乙個新的ssh視窗檢視程序名稱 root bj 3...