<?php
// 需要使用 ticks
declare(ticks = 1);
// 信号处理函数
function sig_handler($signo)
{
switch ($signo) {
case SIGTERM:
// 处理终止任务
exit;
break;
case SIGHUP:
// 处理重启任务
break;
case SIGUSR1:
echo "Caught SIGUSR1...\n";
break;
default:
// 处理所有其它信号
}
}
echo "Installing signal handler...\n";
// 安装信号处理程序
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");
// 或使用对象
// pcntl_signal(SIGUSR1, array($obj, "do_something");
echo "Generating signal SIGUSR1 to self...\n";
// 向当前进程 ID 发送 SIGUSR1 信号
// posix_* 函数需要 posix 扩展
posix_kill(posix_getpid(), SIGUSR1);
echo "Done\n";
?>