pcntl
是 PHP 的一個擴展,它提供了進程控制功能,如創建子進程、等待子進程結束等。要在 PHP 中使用 pcntl
,首先確保你的 PHP 安裝啟用了這個擴展。以下是一些使用 pcntl
的基本示例:
<?php
$pid = pcntl_fork(); // 創建子進程
if ($pid == -1) {
die("進程創建失敗");
} elseif ($pid) {
// 父進程邏輯
echo "父進程 PID: " . getmypid() . PHP_EOL;
pcntl_wait($status); // 等待子進程結束
} else {
// 子進程邏輯
echo "子進程 PID: " . getmypid() . PHP_EOL;
pcntl_exit(0); // 子進程正常結束
}
?>
<?php
$pid = pcntl_fork(); // 創建子進程
if ($pid == -1) {
die("進程創建失敗");
} elseif ($pid) {
// 父進程邏輯
echo "父進程 PID: " . getmypid() . PHP_EOL;
pcntl_wait($status); // 等待子進程結束
} else {
// 子進程邏輯
echo "子進程 PID: " . getmypid() . PHP_EOL;
pcntl_exit(0); // 子進程正常結束
}
?>
<?php
$pid = pcntl_fork(); // 創建子進程
if ($pid == -1) {
die("進程創建失敗");
} elseif ($pid) {
// 父進程邏輯
echo "父進程 PID: " . getmypid() . PHP_EOL;
pcntl_wait($status); // 等待子進程結束
} else {
// 子進程邏輯
echo "子進程 PID: " . getmypid() . PHP_EOL;
pcntl_signal(SIGTERM, function ($signo) {
echo "子進程接收到 SIGTERM 信號,即將退出" . PHP_EOL;
pcntl_exit(0); // 子進程正常結束
});
pcntl_waitpid($pid, $status); // 等待子進程結束
}
?>
請注意,pcntl
擴展在 Windows 系統上不可用。在使用 pcntl
時,請確保你的服務器環境支持該擴展。