久久天天躁狠狠躁夜夜躁,国产精品入口福利,97久久精品人人爽人人爽蜜臀 ,中文字幕国产精品一区二区

當前位置首頁 > 教育資訊

PHP怎么高貴的處理訊號?看完這篇文章你就曉得了

更新時間:2023-10-12 文章作者:佚名 信息來源:網絡整理 閱讀次數:

PHP進程間通訊的另外一個手段就是通過訊號來在進程間傳遞信息。訊號是一種系統調用,一般我們用的kill命令就是發送某個訊號給某個進程的。pzy物理好資源網(原物理ok網)

在開發服務器端守護進程方面,訊號處理至關重要。PHP的pcntl擴充提供了訊號處理的功能,借助它可以讓PHP來接管訊號的處理。pzy物理好資源網(原物理ok網)

明天,我們就來給你們講一講PHP中的訊號處理。pzy物理好資源網(原物理ok網)

哪些是訊號?pzy物理好資源網(原物理ok網)

訊號是風波發生時對進程的通知機制,有時又稱為軟件中斷。一個進程可以向另一個進程發送訊號,例如子進程結束時就會向父進程發送一個(17號訊號)來通知父進程信號與信息處理,所以有時訊號也被當成一種進程間通訊的機制。pzy物理好資源網(原物理ok網)

訊號的形成是有多種方法的,下邊是常見的幾種:pzy物理好資源網(原物理ok網)

●鍵盤上按個別組合鍵,例如Ctrl+C或則Ctrl+D等,會形成訊號。pzy物理好資源網(原物理ok網)

●使用posixkill調用,可以向某個進程發送指定的訊號。pzy物理好資源網(原物理ok網)

●遠程ssh終端情況下,假如你在服務器上執行了一個阻塞的腳本,正在阻塞過程中你關掉了終端,可能還會形成訊號。pzy物理好資源網(原物理ok網)

信號處理是什么_信號處理信息包括_信號與信息處理pzy物理好資源網(原物理ok網)

●硬件也會形成訊號,例如OOM了或則遇見除0這些情況,硬件也會向進程發送特定訊號。pzy物理好資源網(原物理ok網)

而進程在收到訊號后,可以有如下三種響應:pzy物理好資源網(原物理ok網)

●直接忽視,不做任何反映。就是俗名的完全不鳥。并且有兩種訊號,永遠不會被忽視,一個是,另一個是,由于這兩個進程提供了向內核最后的可靠的結束進程的辦法。pzy物理好資源網(原物理ok網)

●捕捉訊號并做出相應的一些反應,具體響應哪些可以由用戶自己通過程序自定義。pzy物理好資源網(原物理ok網)

●系統默認響應。大多數進程在碰到訊號后,假如用戶也沒有自定義響應,這么都會采取系統默認響應,大多數的系統默認響應就是中止進程。pzy物理好資源網(原物理ok網)

PHP訊號處理案例pzy物理好資源網(原物理ok網)

我們在FPM模式下寫代碼,不會碰到訊號處理相關的問題,而且CLI模式下一些常駐顯存的腳本,怎么還能自由的重啟、關閉、退出前做一些清除工作(斷掉鏈接,刪掉臨時文件等)?pzy物理好資源網(原物理ok網)

是PHP的訊號處理注冊方式,這個是pcntl初始化的時侯,將h注冊為tick的處理函數。pzy物理好資源網(原物理ok網)

會將處理函數放在訊號集合中(PHP的hashtable),而最終會調用進行底層的訊號管理。pzy物理好資源網(原物理ok網)

這兒我省略了大量代碼,將關鍵的點標記了下來,雖然PHP維護一個自己的訊號集合,每每調用h時才會查詢是否有訊號信號與信息處理,里面的會將訊號阻塞,這樣只有我們把關鍵的代碼執行完畢以后,再去觸發訊號處理函數以保證數據和程序邏輯的完整性。pzy物理好資源網(原物理ok網)

PHP怎么高貴的處理訊號pzy物理好資源網(原物理ok網)

常常看到身邊的程序員們,每每須要重啟PHP-FPM進程的時侯,使用的招式是kill掉所有PHP進程,之后新啟動。通常情況沒啥問題,但有些時侯可能某個進程的任務還沒執行完,直接把人家中斷了略顯粗魯。pzy物理好資源網(原物理ok網)

雖然只要你給PHP的進程發送一條USR2訊號,它便會再處理完所有任務后,重啟子進程,這才是所謂的高貴~pzy物理好資源網(原物理ok網)

以上圖為例,假如我們想讓進程高貴退出的時侯,只須要發送訊號即可。須要注意的是和訊號會略過訊號阻塞會將進程直接停止,還有就是訊號會中斷睡眠(SLEEP),sleep倘若沒執行完會返回剩下的秒數。pzy物理好資源網(原物理ok網)

訊號相關的知識點雖然有好多,還須要你們在平常的使用中繼續深入研究。以上就是這篇文章的全部內容,希望能對你們有所幫助。pzy物理好資源網(原物理ok網)

發表評論

統計代碼放這里
主站蜘蛛池模板: 雅江县| 新野县| 北京市| 通州区| 芦山县| 万州区| 五寨县| 铁岭市| 江达县| 灵石县| 绥化市| 瑞丽市| 绥芬河市| 新田县| 自贡市| 凤翔县| 延寿县| 山阴县| 阳原县| 健康| 会宁县| 天津市| 利川市| 本溪市| 新建县| 定襄县| 松江区| 崇义县| 雅江县| 永胜县| 丁青县| 哈巴河县| 大连市| 延川县| 合川市| 曲沃县| 盘山县| 陆川县| 阳朔县| 高安市| 重庆市|