詳解如何用PHP?實(shí)現(xiàn)多進(jìn)程
引言
本文將講解如下內(nèi)容:
1.PHP 原生進(jìn)程函數(shù)介紹
2.PHP 實(shí)現(xiàn)多進(jìn)程代碼
1、PHP 原生進(jìn)程函數(shù)
雖然說(shuō) PHP 是世界上最好的語(yǔ)言,但是對(duì)于 PHPer 們來(lái)說(shuō),對(duì)多進(jìn)程、進(jìn)程管理還是相對(duì)陌生的。本文將講解一下使用 PHP 原生代碼如何實(shí)現(xiàn)多進(jìn)程。
首先我們要了解 PHP 實(shí)現(xiàn)多進(jìn)程的函數(shù),如 pcntl_fork、pcntl_wait、pcntl_waitpid 等。
pcntl_fork ( void ) : int
這個(gè)函數(shù)的作用是創(chuàng)建子進(jìn)程,并且返回 int 類(lèi)型的進(jìn)程 ID,父進(jìn)程和子進(jìn)程都是從 fork 的位置開(kāi)始向下繼續(xù)執(zhí)行。
子進(jìn)程創(chuàng)建成功時(shí),在父進(jìn)程執(zhí)行線程內(nèi)返回產(chǎn)生的子進(jìn)程的 PID,在子進(jìn)程執(zhí)行線程內(nèi)返回 0。創(chuàng)建失敗時(shí),在父進(jìn)程上下文返回 - 1,不會(huì)創(chuàng)建子進(jìn)程,并且會(huì)引發(fā)一個(gè) PHP 錯(cuò)誤。
pcntl_wait ( int &$status [, int $options = 0 ] ) : int
這個(gè)函數(shù)的作用是等待或返回 fork 的子進(jìn)程狀態(tài)。此函數(shù)會(huì)掛起當(dāng)前進(jìn)程的執(zhí)行,直到一個(gè)子進(jìn)程退出或者受到一個(gè)信號(hào)要求中斷當(dāng)前進(jìn)程或者調(diào)用一個(gè)信號(hào)處理函數(shù)。如果一個(gè)子進(jìn)程在調(diào)用此函數(shù)時(shí)已經(jīng)退出,此函數(shù)立刻返回。
此函數(shù)返回退出的子進(jìn)程號(hào),發(fā)生錯(cuò)誤時(shí)返回 - 1,如果提供了 WNOHANG 作為 option 并且沒(méi)有可用子進(jìn)程時(shí)返回 0。
pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] ) : int
這個(gè)函數(shù)的作用是等待或返回 fork 的子進(jìn)程狀態(tài)。調(diào)用這個(gè)函數(shù)會(huì)掛起當(dāng)前進(jìn)程的執(zhí)行,直到參數(shù) pid 指定的進(jìn)程號(hào)的進(jìn)程退出,或者接收到一個(gè)信號(hào)要求中斷當(dāng)前進(jìn)程或調(diào)用一個(gè)信號(hào)處理函數(shù)。
pcntl_waitpid () 返回退出的子進(jìn)程進(jìn)程號(hào),發(fā)生錯(cuò)誤時(shí)返回 - 1, 如果提供了 WNOHANG 作為 option,并且沒(méi)有可用子進(jìn)程時(shí)返回 0。
pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] ) : bool
這個(gè)函數(shù)的作用是安裝信號(hào)處理器,為 signo 指定的信號(hào)安裝一個(gè)新的信號(hào)處理器。
signo 為信號(hào)編號(hào)。
handler 為信號(hào)處理器,可以是用戶創(chuàng)建的函數(shù)或方法,也可以是系統(tǒng)常亮 SIG_IGN(忽略信號(hào)處理程序)或 SIG_DFL(默認(rèn)信號(hào)處理程序)。
restart_syscalls 指定當(dāng)信號(hào)到達(dá)時(shí)系統(tǒng)調(diào)用重啟是否可用。
函數(shù)返回值為 bool 型,成功時(shí)返回 true,失敗時(shí)返回 false。
2、PHP 實(shí)現(xiàn)多進(jìn)程代碼
以上就是詳解如何用PHP 實(shí)現(xiàn)多進(jìn)程的詳細(xì)內(nèi)容,更多關(guān)于PHP 多進(jìn)程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php 頁(yè)面執(zhí)行時(shí)間計(jì)算代碼
我們?cè)陂_(kāi)發(fā)網(wǎng)頁(yè)的時(shí)候,往往會(huì)測(cè)試一下自己寫(xiě)的網(wǎng)頁(yè)的執(zhí)行時(shí)間是多少,例如:有時(shí)網(wǎng)頁(yè)打開(kāi)很慢,但是不知道是卡在哪了,這時(shí)我們就可以使用以下的方法來(lái)判斷頁(yè)面的執(zhí)行時(shí)間是多少,準(zhǔn)確的找到問(wèn)題所在點(diǎn),精確到毫秒。2008-12-12php iconv() : Detected an illegal character in input string
PHP傳給JS字符串用ecsape轉(zhuǎn)換加到url里,又用PHP接收,再用網(wǎng)上找的unscape函數(shù)轉(zhuǎn)換一下,這樣得到的字符串是UTF-8的,但我需要的是GB2312,于是用iconv轉(zhuǎn)換2010-12-12php完全過(guò)濾HTML,JS,CSS等標(biāo)簽
全是正則過(guò)濾HTML標(biāo)簽,但是今天自己拿來(lái)用都不好用了.原因??就是標(biāo)簽轉(zhuǎn)義了.2009-01-01php數(shù)組函數(shù)序列之a(chǎn)rray_search()- 按元素值返回鍵名
array_search() 函數(shù)與 in_array() 一樣,在數(shù)組中查找一個(gè)鍵值。如果找到了該值,匹配元素的鍵名會(huì)被返回。如果沒(méi)找到,則返回 false2011-11-11php setcookie函數(shù)的參數(shù)說(shuō)明及其用法
這篇文章主要介紹了php setcookie函數(shù)的參數(shù)說(shuō)明及其用法,需要的朋友可以參考下2014-04-04php檢測(cè)apache mod_rewrite模塊是否安裝的方法
這篇文章主要介紹了php檢測(cè)apache mod_rewrite模塊是否安裝的方法,通過(guò)對(duì)apache mod_rewrite模塊相關(guān)函數(shù)的檢測(cè)實(shí)現(xiàn)該檢測(cè)功能,需要的朋友可以參考下2015-03-03php使用環(huán)形鏈表解決約瑟夫問(wèn)題完整示例
這篇文章主要介紹了php使用環(huán)形鏈表解決約瑟夫問(wèn)題,簡(jiǎn)單描述了約瑟夫問(wèn)題并結(jié)合實(shí)例形式分析了php基于環(huán)形鏈表解決約瑟夫問(wèn)題的相關(guān)操作技巧,注釋中包含較為詳盡的說(shuō)明便于理解,需要的朋友可以參考下2018-08-08