在 PHP 中,可以使用 pcntl 擴展來創建和管理多進程。但是,從 PHP 7.2 開始,pcntl 擴展在 Windows 平臺上不再可用。因此,我們將使用 pcntl_fork()
函數在類 Unix 系統上創建多進程,并使用 Process
類在 Windows 平臺上進行任務調度。
首先,確保已經安裝了 PHP 的 pcntl
擴展(對于類 Unix 系統)和 Process
類(對于 Windows 系統)。
以下是一個簡單的示例,展示了如何在類 Unix 系統上使用 pcntl_fork()
創建多進程并在 Windows 上使用 Process
類進行任務調度:
<?php
class TaskScheduler
{
public function scheduleTasks()
{
if (function_exists('pcntl_fork')) {
// 類 Unix 系統
$processes = [];
for ($i = 0; $i < 5; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
die('無法創建子進程');
} elseif ($pid) {
// 父進程
$processes[] = $pid;
} else {
// 子進程
$this->runTask();
exit(0);
}
}
foreach ($processes as $pid) {
pcntl_wait($status);
}
} else {
// Windows 系統
$process = new Process([$this, 'runTask']);
$process->start();
$process->wait();
}
}
protected function runTask()
{
echo "執行任務...\n";
}
}
$scheduler = new TaskScheduler();
$scheduler->scheduleTasks();
在這個示例中,我們創建了一個名為 TaskScheduler
的類,它有一個 scheduleTasks
方法。在 scheduleTasks
方法中,我們首先檢查當前系統是否為類 Unix 系統(通過檢查 pcntl_fork()
是否可用)。如果是類 Unix 系統,我們使用 pcntl_fork()
創建子進程并運行 runTask
方法。如果是 Windows 系統,我們使用 Process
類創建一個新的進程并運行 runTask
方法。
注意:在實際應用中,你可能需要根據任務需求和系統環境對代碼進行調整。