在 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();
?>
請注意,這些方法可能需要額外的配置或安裝。在選擇適合你項目的方法時,請確保考慮到你的需求和運行環境。