你知道如何用 PHP 實現多進程嗎?
本文將講解如下內容:
1.PHP 原生進程函數介紹
2.PHP 實現多進程代碼
1、 PHP 原生進程函數
雖然説 PHP 是世界上最好的語言,但是對於 PHPer 們來説,對多進程、進程管理還是相對陌生的。本文將講解一下使用 PHP 原生代碼如何實現多進程。
首先我們要了解 PHP 實現 多進程的函數 ,如 pcntl_fork 、 pcntl_wait、pcntl_waitpid 等。
pcntl_fork ( void ) : int
這個函數的作用是創建子進程,並且返回 int 類型的進程 ID,父進程和子進程都是從 fork 的位置開始向下繼續執行。
子進程創建成功時,在父進程執行線程內返回產生的子進程的 PID,在子進程執行線程內返回 0。創建失敗時,在父進程上下文返回 - 1,不會創建子進程,並且會引發一個 PHP 錯誤。
pcntl_wait ( int &$status [, int $options = 0 ] ) : int
這個函數的作用是等待或返回 fork 的子進程狀態。此函數會掛起當前進程的執行,直到一個子進程退出或者受到一個信號要求中斷當前進程或者調用一個信號處理函數。如果一個子進程在調用此函數時已經退出,此函數立刻返回。
此函數返回退出的子進程號,發生錯誤時返回 - 1,如果提供了 WNOHANG 作為 option 並且沒有可用子進程時返回 0。
pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] ) : int
這個函數的作用是等待或返回 fork 的子進程狀態。調用這個函數會掛起當前進程的執行,直到參數 pid 指定的進程號的進程退出,或者接收到一個信號要求中斷當前進程或調用一個信號處理函數。
pcntl_waitpid () 返回退出的子進程進程號,發生錯誤時返回 - 1, 如果提供了 WNOHANG 作為 option,並且沒有可用子進程時返回 0。
pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] ) : bool
這個函數的作用是安裝信號處理器,為 signo 指定的信號安裝一個新的信號處理器。
signo 為信號編號。
handler 為信號處理器,可以是用户創建的函數或方法,也可以是系統常亮 SIG_IGN(忽略信號處理程序)或 SIG_DFL(默認信號處理程序)。
restart_syscalls 指定當信號到達時系統調用重啟是否可用。
函數返回值為 bool 型,成功時返回 true,失敗時返回 false。
2、 PHP 實現多進程代碼
- 設計模式之狀態模式
- 如何實現數據庫讀一致性
- 我是怎麼入行做風控的
- C 11精要:部分語言特性
- 吳恩達來信:人工智能領域的求職小 tips
- EasyCV帶你復現更好更快的自監督算法-FastConvMAE
- 某車聯網App 通訊協議加密分析(四) Trace Code
- 帶你瞭解CANN的目標檢測與識別一站式方案
- EasyNLP玩轉文本摘要(新聞標題)生成
- PostgreSQL邏輯複製解密
- 基於 CoreDNS 和 K8s 構建雲原生場景下的企業級 DNS
- 循環神經網絡(RNN)可是在語音識別、自然語言處理等其他領域中引起了變革!
- 技術分享| 分佈式系統中服務註冊發現組件的原理及比較
- 利用谷歌地圖採集外貿客户的電話和手機號碼
- 跟我學Python圖像處理丨關於圖像金字塔的圖像向下取樣和向上取樣
- 帶你掌握如何使用CANN 算子ST測試工具msopst
- 一招教你如何高效批量導入與更新數據
- 一步步搞懂MySQL元數據鎖(MDL)
- 你知道如何用 PHP 實現多進程嗎?
- KubeSphere 網關的設計與實現(解讀)