在 PHP 中,可以使用 pcntl 扩展库来创建和管理多进程。以下是一个简单的示例,展示了如何使用 pcntl 扩展库在 PHP 中分配任务:
$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
。