rango php,韩天峰(Rango)的博客

本文介绍了PHP的pcntl扩展,该扩展提供信号处理功能,使得在开发服务器守护进程时能够有效地响应信号。pcntl扩展仅在CLI/CGI模式下可用,不适用于mod_php和php-fpm。通过`pcntl_signal`函数可以注册信号处理函数,如示例所示,处理SIGUSR1和SIGUSR2信号。在信号处理中,还可以通过`declare(ticks=1)`设置ticks来确保信号处理函数的执行。
摘要由CSDN通过智能技术生成

PHP的pcntl扩展提供了信号处理的功能,利用它可以让PHP来接管信号的处理,在开发服务器端守护进程方面,信号处理至关重要。pcntl这个扩展仅在cli/cgi模式下可用。mod_php和php-fpm中不可以使用。PHP在编译的过程中,并没有把pcntl连接到php-cli可执行文件中。

函数原型:

bool pcntl_signal(int $signo ,callback $handler [,bool $restart_syscalls=true])

第二个参数是信号发生时回调的PHP函数。

第三个参数是是否restart,是否重新注册此信号。这个参数如果为false,那此信号只注册处理一次。

//信号处理需要注册ticks才能生效,这里务必注意

//PHP5.4以上版本就不再依赖ticks了

declare(ticks = 1);

function sig_handler($signo)

{

switch ($signo) {

case SIGUSR1:

echo "SIGUSR1\n";

break;

case SIGUSR2:

echo "SIGUSR2\n";

break;

default:

echo "unknow";

break;

}

}

pcntl_signal(SIGUSR1, "sig_handler");

pcntl_signal(SIGUSR2, "sig_handler");

posix_kill(posix_getpid(), SIGUSR1);

posix_kill(posix_getpid(), SIGUSR2);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值