使用内置 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);