注意
實(shí)現(xiàn)多進(jìn)程需要開啟的擴(kuò)展:pcntl、 posix。 (推薦學(xué)習(xí):PHP視頻教程)
Windows 環(huán)境下不支持 PHP 的多進(jìn)程編程,本文主要在 Linux 環(huán)境下開發(fā)測(cè)試
一張簡(jiǎn)單結(jié)構(gòu)圖
主要功能
pcntl_fork:創(chuàng)建多進(jìn)程,調(diào)用后會(huì)返回兩條進(jìn)程的pid,0 為子進(jìn)程,大于 0 為父進(jìn)程(父進(jìn)程得到子進(jìn)程的 id,所以大于 0),-1為創(chuàng)建失敗
$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) { //fork失敗 } elseif ($pid > 0) { //父進(jìn)程 ...... } elseif ($pid == 0) { //子進(jìn)程 ...... }
pcntl_signal: 注冊(cè)一個(gè)信號(hào)處理回調(diào)函數(shù),可以捕獲子進(jìn)程結(jié)束時(shí)發(fā)出的信號(hào)
/配合pcntl_signal使用 declare (ticks = 1); //當(dāng)子進(jìn)程退出時(shí),會(huì)觸發(fā)該函數(shù),當(dāng)前子進(jìn)程數(shù)-1 pcntl_signal(SIGCHLD, function ($signo) { switch ($signo) { case SIGCHLD: echo $curChildPro . 'SIGCHLD', PHP_EOL; $curChildPro--; break; } });
pcntl_wait: 用來(lái)暫停父進(jìn)程,等待子進(jìn)程退出
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com