在伺服器跑腳本時,避免不了一些耗時任務,使用多進程是不可或缺的。 而在 PHP5.5 之後,PHP 開始加入了多進程元素,以滿足開發需求。
注意
#實現多進程需要開啟的擴充:pcntl、 posix。 (建議學習:PHP影片教學)
Windows 環境下不支援PHP 的多進程編程,本文主要在Linux 環境下開發測試
#一張簡單結構圖
主要功能
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中文網其他相關文章!