在伺服器跑腳本時,避免不了一些耗時任務,使用多進程是不可或缺的。 而在 PHP5.5 之後,PHP 開始加入了多進程元素,以滿足開發需求。
注意
#實現多進程需要開啟的擴充:pcntl、 posix。
Windows 環境下不支援PHP 的多進程編程,本文主要在Linux 環境下開發測試
#主要功能(推薦學習:PHP視訊教學)
pcntl_fork:建立多進程,呼叫後會回傳兩個進程的pid,0 為子進程,大於0 為父進程(父行程得到子行程的id,所以大於0),-1為建立失敗
$pid = $pcntlInstall ? pcntl_fork() : 0; if ($pid == -1) { //fork失败 } elseif ($pid > 0) { //父进程 ...... } elseif ($pid == 0) { //子进程 ...... }
pcntl_signal: 註冊一個訊號處理回呼函數,可以擷取子行程結束時發出的訊號
/配合pcntl_signal使用 declare (ticks = 1); //当子进程退出时,会触发该函数,当前子进程数-1 pcntl_signal(SIGCHLD, function ($signo) { switch ($signo) { case SIGCHLD: echo $curChildPro . 'SIGCHLD', PHP_EOL; $curChildPro--; break; } });
pcntl_wait: 用來暫停父進程,等待子進程退出
以上是php支援多進程嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!