请问php的pcntl怎么使用?

按照图片代码得到结果

当我将代码修改后

得到的结果是

请问pcntl多进程时,加exit时,到第一个子进程便截止运行了,当我在子进程添加获取数据操作后,直接不进入子进程操作,这种应该怎么修改

pcntl 扩展是 PHP 中专门用于进程控制的扩展。它提供了操作多进程的各种函数,如创建子进程、发送信号等。使用 pcntl 扩展可以编写更高级的多进程 PHP 程序。

以下是几种常用的 pcntl 函数及其用法:

  1. pcntl_fork(): 创建一个子进程,使得父进程和子进程各自运行不同的代码。使用此方法创建一个后台运行的进程非常方便。示例代码如下:
$pid = pcntl_fork();
if ($pid == -1) {
    die("Could not fork");
} else if ($pid) {
    // 父进程执行的代码
    echo "Parent process running\n";
} else {
    // 子进程执行的代码
    echo "Child process running\n";
    exit();
}
  1. pcntl_signal(): 注册一个信号,可以在脚本执行时接收和处理信号。信号可以是操作系统停止进程、中断进程等事件。它的第一个参数是信号名,第二个参数是用于接收信号的回调函数。示例代码如下:
// 声明一个信号处理函数
function signal_handler($signal) {
    // 在接收到信号时做一些处理
    echo "Received signal $signal\n";
}

// 注册信号处理函数
pcntl_signal(SIGTERM, "signal_handler");

// 主循环持续运行
while (true) {
    // 执行代码
    echo "Main loop running...\n";
}
  1. pcntl_waitpid(): 等待一个子进程结束并返回子进程的信息。可以防止出现 "僵尸进程(zombie process)",也就是子进程结束了,但是父进程还没有释放它的资源。示例代码如下:
$pid = pcntl_fork();
if ($pid == -1) {
    die("Could not fork");
} else if ($pid) {
    // 父进程等待子进程结束
    pcntl_wait($status); // 或者使用 pcntl_waitpid($pid, $status, 0);
    echo "Child process completed with status $status\n";
} else {
    // 子进程执行的代码
    sleep(10); // 模拟子进程执行耗时任务
    exit();
}

这是 pcntl 扩展中一些常用的函数及其用法,你可以根据需要进行调整和扩展。请注意,进程控制是一个非常复杂的主题,需要深入理解进程原理、信号机制等概念。在编写多进程 PHP 程序时,你需要时刻注意进程状态和资源的管理,以保证程序的稳定运行。