在 PHP 中,可以使用 pcntl 扩展库来创建和管理多进程。以下是一个简单的示例,展示了如何使用 pcntl 扩展库在 PHP 中分配任务:
<?php
// 任务函数
function task($arg) {
echo "Processing task with argument: $arg\n";
}
// 主进程
$num_workers = 5; // 要创建的工作进程数
$tasks_per_worker = 10; // 每个工作进程要处理的任务数
$tasks = range(1, $num_workers * $tasks_per_worker); // 生成任务列表
// 创建工作进程
$workers = [];
for ($i = 0; $i < $num_workers; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
die("Fork failed");
} elseif ($pid == 0) {
// 子进程
while (count($tasks) > 0) {
$task = array_shift($tasks);
task($task);
}
exit(0);
} else {
// 父进程
$workers[] = $pid;
}
}
// 等待所有工作进程完成
foreach ($workers as $pid) {
pcntl_wait($status);
}
echo "All tasks completed\n";
在这个示例中,我们首先定义了一个名为 task
的函数,该函数接受一个参数并输出处理任务的信息。接下来,我们创建了 5 个工作进程,每个进程将处理 10 个任务。我们使用 pcntl_fork()
函数创建子进程,并在子进程中处理任务。最后,我们使用 pcntl_wait()
函数等待所有子进程完成。
请注意,这个示例仅适用于类 Unix 系统,如 Linux 和 macOS。在 Windows 上,可以使用 pcntl
的替代库,如 pthreads
或 parallel
。