你知道如何用PHP實現多程序嗎

2022-12-15 18:01:08
本篇文章給大家帶來了關於的相關知識,其中主要介紹了多程序的相關問題,雖然說 PHP是世界上最好的語言,但是對於 PHPer 們來說,對多程序、程序管理還是相對陌生的;下面一起來看一下,希望對大家有幫助。

推薦學習:《》

php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:

1、PHP 原生程序函數

雖然說 PHP 是世界上最好的語言,但是對於 PHPer 們來說,對多程序、程序管理還是相對陌生的。本文將講解一下使用 PHP 原生程式碼如何實現多程序。

06.png

首先我們要了解 PHP 實現多程序的函數,如 pcntl_forkpcntl_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。

07.png

pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] ) : int
登入後複製

這個函數的作用是等待或返回 fork 的子程序狀態。呼叫這個函數會掛起當前程序的執行,直到引數 pid 指定的程序號的程序退出,或者接收到一個訊號要求中斷當前程序或呼叫一個訊號處理常式。

08.png

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 實現多程序程式碼

09.png

10.png

推薦學習:《》

以上就是你知道如何用PHP實現多程序嗎的詳細內容,更多請關注TW511.COM其它相關文章!