在 PHP Swoole 中,使用多线程进行任务调度可以通过创建多个子线程来实现。以下是一个简单的示例,展示了如何使用 Swoole 的 Thread
类来创建多个子线程并执行任务:
<?php
require_once 'autoload.php';
use Swoole\Thread;
// 任务函数
function task($id)
{
echo "Task $id started\n";
sleep(2); // 模拟任务执行时间
echo "Task $id finished\n";
}
// 创建线程数量
$threadCount = 5;
// 创建线程并启动
for ($i = 0; $i < $threadCount; $i++) {
$thread = new Thread(function () use ($i) {
task($i);
});
$thread->start();
}
// 等待所有线程完成
for ($i = 0; $i < $threadCount; $i++) {
$thread->join();
}
echo "All tasks completed\n";
在这个示例中,我们首先定义了一个名为 task
的任务函数,该函数接受一个参数 $id
。然后,我们创建了一个名为 $threadCount
的变量,用于存储要创建的线程数量。接下来,我们使用一个 for
循环创建并启动指定数量的子线程。在每个子线程中,我们调用 task
函数并传入一个参数,该参数表示任务的 ID。最后,我们使用另一个 for
循环等待所有子线程完成。
需要注意的是,Swoole 的多线程支持仅在 Swoole 4.x 版本中可用。如果你使用的是更早的 Swoole 版本,你需要升级到最新版本或者使用其他方法实现多线程任务调度。