English | 简体中文 | 繁體中文
查询

Swoole\Process::signal()函数—用法及示例

「 设置进程信号处理函数 」


函数名:Swoole\Process::signal()

适用版本:Swoole扩展版本1.9.0以上

用法:Swoole\Process::signal()函数用于设置进程信号处理函数。

语法:bool Swoole\Process::signal(int $signo, callable $callback)

参数:

  • $signo:要处理的信号编号,可以使用PHP内置的PCNTL扩展提供的常量,如SIGTERM、SIGUSR1等。
  • $callback:信号处理函数,可以是一个普通函数、匿名函数或者类方法。

返回值:成功返回true,失败返回false。

示例:

<?php
// 创建子进程
$process = new Swoole\Process(function() {
    // 子进程信号处理函数
    Swoole\Process::signal(SIGTERM, function($signo) {
        echo "子进程收到信号SIGTERM,退出进程\n";
        exit;
    });
});

// 启动子进程
$pid = $process->start();

// 主进程信号处理函数
Swoole\Process::signal(SIGTERM, function($signo) use ($pid) {
    echo "主进程收到信号SIGTERM,向子进程发送信号\n";
    Swoole\Process::kill($pid, SIGTERM);
});

// 等待子进程退出
Swoole\Process::wait();

echo "主进程退出\n";

以上示例中,首先创建了一个子进程,并在子进程中设置了SIGTERM信号的处理函数。然后在主进程中也设置了SIGTERM信号的处理函数,当主进程收到SIGTERM信号时,会向子进程发送SIGTERM信号。

当运行以上代码时,可以通过向该进程发送SIGTERM信号来触发信号处理函数的执行。示例中的输出结果会根据信号的触发而有所不同。

补充纠错
上一个函数: Swoole\Process::start()函数
下一个函数: Swoole\Process::read()函数
热门PHP函数
分享链接