PHP信号处理机制的操作代码讲解

 更新时间:2019年04月19日 08:36:41   投稿:laozhang  
在本篇文章里小编给大家分享了关于PHP信号处理机制的操作的相关知识点内容,需要的朋友们学习下。

我们首先来看下实例代码:

function sig_handler($sig)

{

  print("handled sig: $sig\n");

}

 

 

 

pcntl_signal(SIGIO,  "sig_handler");

posix_kill(posix_getpid(),SIGIO);

 

while(true)

{

  posix_kill(posix_getpid(),SIGIO);

 

  pcntl_signal_dispatch();

 

  sleep(1);

}

最好自己手动循环处理信号队列,而不是使用php提供的的declare(ticks=1),tick_handler()这种信号处理机制,因为tick机制的性能问题,每执行一条语句都回调tick_handler查看是否有信号,而很大部分时间是没有信号的。

posix_signal设置信号的回调处理,

posix_kill仅仅是把信号放入进程的信号待处理队列中,所有并不会触发信号回调,由pcntl_signal_dispatch处理信号队列中的信号

posix_getpwnam("nginx"):获取用户名的uid,gid等信息

pcntl_signal(SIGPIPE, SIG_IGN, false):忽略内核发来的SIGPIPE信号,当连接已closed,进程继续发数据到无效socket,系统会收到含RST 控制位TCP包,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。该信号的默认处理是终止进程,进程可以捕获它并忽略该信号以免不情愿的被终止。

socket上下文选项:

backlog:用于限制流监听队列中未完成连接的连接数量

so_reuseport:重用端口(由内核调度连接到多个监听同一个端口的进程,由于是通过hash方式来标志连接对应的进程,所以监听进程数是不能改变的,)

定时器信号处理

pcntl_signal(SIGALRM,"sig_handler");

pcntl_alarm(2);

function sig_handler($sig)

{

  echo "one second after";

}

while (1)

{

  pcntl_signal_dispatch();

  sleep(1);

}

相关文章

  • 使用 MySQL Date/Time 类型

    使用 MySQL Date/Time 类型

    上次对于 MySQL 方面已经有的一些总结,但是昨晚 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原来是 Zend Studio 的时区配置问题(我狂汗ing)。而在和他讨论期间也谈到了很多关于 MySQL 的细节问题,还是记录一下当作备忘比较好。这篇文章同时也做说服 wiLdGoose 兄用。
    2008-03-03
  • PHP中读取照片exif信息的方法

    PHP中读取照片exif信息的方法

    这篇文章主要介绍了PHP中读取照片exif信息的方法,本文从什么是exif信息开始讲解,使用PHP需要什么扩展、及它的安装方法和使用代码示例等,需要的朋友可以参考下
    2014-08-08
  • php统计数组元素个数的方法

    php统计数组元素个数的方法

    这篇文章主要介绍了php统计数组元素个数的方法的相关资料,需要的朋友可以参考下
    2015-07-07
  • libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢

    libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢

    很多安装PHP的教程,都是教大家把php里的libmysql.dll拷贝到c:\windows目录下(有的教程会说还要把php.ini等文件拷到系统目录的,其实一个文件都不用拷贝去的。)。
    2010-03-03
  • php printf输出格式使用说明

    php printf输出格式使用说明

    printf的格式控制的完整格式,学习php的朋友可以参考下。
    2010-12-12
  • php 验证码(倾斜,正弦干扰线,黏贴,旋转)

    php 验证码(倾斜,正弦干扰线,黏贴,旋转)

    本篇文章是对php 验证码(倾斜,正弦干扰线,黏贴,旋转)进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 详解WordPress开发中wp_title()函数的用法

    详解WordPress开发中wp_title()函数的用法

    这篇文章主要介绍了WordPress开发中wp_title()函数的用法,wp_title可以用来显示文章标题和分类名称等,需要的朋友可以参考下
    2016-01-01
  • PHP合并数组函数array_merge用法分析

    PHP合并数组函数array_merge用法分析

    这篇文章主要介绍了PHP合并数组函数array_merge用法,结合实例形式分析了php数组合并函数array_merge的具体功能、使用方法与相关注意事项,需要的朋友可以参考下
    2017-02-02
  • 提高Laravel应用性能方法详解

    提高Laravel应用性能方法详解

    在本篇文章里小编给大家整理了关于提高Laravel应用性能方法和相关实例代码,需要的朋友们学习下。
    2019-06-06
  • PHP使用SOAP扩展实现WebService的方法

    PHP使用SOAP扩展实现WebService的方法

    这篇文章主要介绍了PHP使用SOAP扩展实现WebService的方法,结合实例形式较为详细的分析了SOAP扩展的原理及实现WebService的相关技巧,需要的朋友可以参考下
    2016-04-04

最新评论