在PHP中,可以使用PCNTL(Process Control)擴展來實現多進程。PCNTL擴展提供了用于創建、管理和終止進程的功能。以下是一個簡單的示例,展示了如何使用PCNTL擴展創建一個PHP命令行腳本,該腳本可以創建多個子進程并執行相同的任務。
首先,確保已經安裝了PCNTL擴展。在Debian和Ubuntu系統上,可以使用以下命令安裝:
sudo apt-get install php-pcntl
然后,創建一個名為multiprocess.php
的PHP腳本,內容如下:
<?php
// 檢查PCNTL擴展是否已啟用
if (!function_exists('pcntl_fork')) {
die("PCNTL擴展未啟用。請確保已安裝并啟用了PCNTL擴展。");
}
// 定義要執行的函數
function worker() {
echo "子進程 PID: " . getmypid() . PHP_EOL;
// 在這里執行你的任務
}
// 創建子進程數量
$num_processes = 5;
// 創建并啟動子進程
for ($i = 0; $i < $num_processes; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
die("無法創建子進程。");
} elseif ($pid) {
// 父進程
echo "父進程 PID: " . getmypid() . PHP_EOL;
} else {
// 子進程
worker();
exit(0);
}
}
// 等待所有子進程完成
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
echo "子進程 {$status} 已完成。" . PHP_EOL;
}
echo "所有子進程已完成。" . PHP_EOL;
保存腳本后,通過命令行運行它:
php multiprocess.php
這個腳本將創建5個子進程,每個子進程都會輸出其PID并執行worker
函數。父進程會輸出其PID,并等待所有子進程完成。