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
时,请确保你的服务器环境支持该扩展。