首頁 >後端開發 >PHP問題 >php是多進程的嗎

php是多進程的嗎

(*-*)浩
(*-*)浩原創
2019-09-29 10:20:122534瀏覽

在伺服器跑腳本時,避免不了一些耗時任務,使用多進程是不可或缺的。 而在 PHP5.5 之後,PHP 開始加入了多進程元素,以滿足開發需求。

php是多進程的嗎

注意

#實現多進程需要開啟的擴充:pcntl、 posix。 (建議學習:PHP影片教學

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn