你知道如何用 PHP 實現多程式嗎?
本文將講解如下內容:
1.PHP 原生程式函式介紹
2.PHP 實現多程式程式碼
1、 PHP 原生程式函式
雖然說 PHP 是世界上最好的語言,但是對於 PHPer 們來說,對多程式、程式管理還是相對陌生的。本文將講解一下CRMEB打通版商城系統使用 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 實現多程式程式碼
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021881/viewspace-2914865/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你知道前端是如何實現水印的嗎前端
- 你知道Redis可以實現延遲佇列嗎?Redis佇列
- CAS你知道嗎?底層如何實現?ABA問題又是什麼?關於這些你知道答案嗎
- 你知道嗎,Flutter內建了10多種showFlutter
- PHP實現master-worker守護多程式PHPAST
- 都用過@Autowired,但你知道它是怎麼實現的嗎
- 都知道Base64,Base32你能實現嗎?
- 這10條PHP7中的禁忌,你知道嗎?PHP
- 你知道低程式碼BPM平臺嗎?
- 面試官問:多執行緒同步內部如何實現的,你知道怎麼回答嗎?面試執行緒
- 你知道短網址是什麼嗎?知不知道它的實現原理?
- 你真的知道怎麼實現一個延遲佇列嗎?佇列
- 1v1影片原始碼,你知道如何實現多執行緒的順序執行嗎?原始碼執行緒
- 你知道可以通過網址訪問的Servlet如何實現嗎?Servlet
- 【嗅探底層】你知道Synchronized作用是同步加鎖,可你知道它在JVM中是如何實現的嗎?synchronizedJVM
- 分散式鎖的多種實現方式,你瞭解嗎?分散式
- 用HTML5實現手機搖一搖功能你有做過嗎?你知道它的原理嗎?HTML
- 你知道嗎,Flutter內建了10多種Button控制元件Flutter控制元件
- 畫江湖之 PHP 多程式開發 [實現守護程式化]PHP
- 從0到1優雅的實現PHP多程式管理PHP
- 你真的知道跨域嗎跨域
- PHP開發者該知道的多程式消費佇列PHP佇列
- 為了賣皮膚,你知道《英雄聯盟》有多努力嗎?
- PHP 實現守護程式PHP
- 多程式PHP指令碼實現海量資料轉移總結PHP指令碼
- PHP中的構造方法和析構方法你知道怎麼用了嗎?PHP構造方法
- 你知道Laravel為什麼會成為最優雅的PHP框架嗎?LaravelPHP框架
- 如何用Python實現多工版的udp聊天器PythonUDP
- 每日一學:你知道如何在 RabbitMQ 中實現 Work queues工作佇列模式嗎?MQ佇列模式
- 多種雲資源管理用什麼軟體好?你知道嗎?
- 你知道什麼是ECMAScript嗎?
- 你知道 Java 有哪些引用嗎?Java
- Gradle Kotlin DSL , 你知道它嗎?GradleKotlin
- Go SliceHeader 和 StringHeader,你知道嗎?GoHeader
- 你知道如何學習Linux嗎?Linux
- 你知道什麼是 AOP 嗎?
- PHP的多樣化執行方式(parallel PHP多執行緒實現,原生協程實現,多程序實現,ZTS、NTS、TS又是什麼)PHPParallel執行緒
- PHP 程式池與輪詢排程演算法實現多工PHP演算法