在 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 版本,你需要升級到最新版本或者使用其他方法實現多線程任務調度。