使用內建 fork 函式進行多處理

你可以使用內建函式將 PHP 程序作為分支執行。如果你不需要執行緒相互通訊,這是實現並行工作的最簡單方法。

這允許你將時間密集型任務(如將檔案上載到另一臺伺服器或傳送電子郵件)到另一個執行緒,這樣你的指令碼載入速度更快,並且可以使用多個核心,但要注意這不是真正的多執行緒,而你的主執行緒不會知道孩子們在做什麼。

請注意,在 Windows 下,這將為你啟動的每個分支彈出另一個命令提示符。

master.php

$cmd = "php worker.php 10";
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') // for windows use popen and pclose
{
    pclose(popen($cmd,"r"));
}
else //for unix systems use shell exec with "&" in the end
{
    exec('bash -c "exec nohup setsid '.$cmd.' > /dev/null 2>&1 &"');
}

worker.php

//send emails, upload files, analyze logs, etc
$sleeptime = $argv[1];
sleep($sleeptime);