在 PHP 中,实现单线程任务的并行处理可以通过以下几种方法:
<?php
function task($id) {
echo "Task $id started\n";
sleep(1);
echo "Task $id finished\n";
}
$tasks = [1, 2, 3];
foreach ($tasks as $id) {
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} elseif ($pid) {
// 父进程
pcntl_wait($status);
} else {
// 子进程
task($id);
exit;
}
}
?>
parallel_run()
函数来定义并行任务。<?php
function task($id) {
echo "Task $id started\n";
sleep(1);
echo "Task $id finished\n";
}
$tasks = [1, 2, 3];
foreach ($tasks as $id) {
parallel_run(function() use ($id) {
task($id);
});
}
?>
Process
类来创建子进程,并在其中执行任务。<?php
require 'vendor/autoload.php';
use React\EventLoop\Factory;
use React\Process\Process;
function task($id) {
echo "Task $id started\n";
usleep(100000);
echo "Task $id finished\n";
}
$loop = Factory::create();
$tasks = [1, 2, 3];
foreach ($tasks as $id) {
$process = new Process(function() use ($id) {
task($id);
}, ['echo' => false]);
$loop->addTimer(1, function() use ($process) {
$process->sendSignal(SIGTERM);
});
$process->start();
}
$loop->run();
?>
请注意,这些方法可能需要额外的配置或安装。在选择适合你项目的方法时,请确保考虑到你的需求和运行环境。