当前位置:首页 > PHP > 正文内容

【二】PHP多进程学习-进程信号管理

高老师6年前 (2019-04-04)PHP1448

(1).学习目标:
    了解常见信号类型(百度PHP支持的信号类型),
(2).相关函数学习:
    (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信号时执行
    (2.2).pcntl_signal_dispatch函数用于调用所有的信号管理器.
    延伸:可以设置多个信号管理器,然后让pcntl_signal_dispatch函数批量调用.由于pcntl_signal_dispatch函数内部没有挂起,所以需要我们while(true)执行它
(3).代码案例
    (3.1).创建SIGTERM信号监听(当使用kill进程命令时会想进程发送SIGTERM信号)

<?php
//安装SIGTERM信号管理
pcntl_signal(SIGTERM, function () {
    var_dump('好像有人要Kill我,有点慌');
});

//调用等待信号的处理器
while (true)
{
    pcntl_signal_dispatch();
}

解析:通过简单的例子我们知道信号管理可以帮助我们在多进程开发中根据信号类型来响应操作.例如我希望用户kill我时候上报日志等信息。

    (3.2).监听Linux的闹钟信号,实现定时器.(pcntl_alarm函数为进程设置闹钟信号,参数是秒)

<?php
pcntl_signal(SIGALRM, function () {

    //设置的闹钟信号只能响应1次.于是我在这里再次设置
    pcntl_alarm(5);
    echo '5秒后我被执行了' . PHP_EOL;
    
    //可以编写需要重复执行的代码
    
}, false);

pcntl_alarm(5);

while (true)
{
    pcntl_signal_dispatch();
}

解析:由于设置的闹钟信号只能接收1次,于是在接收的地方可以再次设置闹钟,时间循环执行的定时器。第一章有学习非阻塞的多进程,可以配合多进程实现多进程定时任务管理

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/84.html

分享给朋友:

“【二】PHP多进程学习-进程信号管理” 的相关文章

 php header属性,php header 详解,php header的作用

php header属性,php header 详解,php header的作用

header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...

php 将数组键值转为变量

php 将数组键值转为变量

<?php $data=array('a'=>1,'b'=>2,'c'=>3,'d'=>4); extract($data); var_dump($a,$b,$c,$d); ?>在人人商城中捡到的...

 php max input vars,max input vars限制,max input vars 设置

php max input vars,max input vars限制,max input vars 设置

在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...

php soap 捕获异常,使用try catch 捕获Soap 异常

php soap 捕获异常,使用try catch 捕获Soap 异常

项目中使用服务来执行webservice,由于对方系统api不稳定,经常导致服务崩溃,只能重启,一个月差不多要重启一次。初期的解决办法是捕获异常,然后continue掉。<?php try {     $url = 'http...

PHP getenv函数和putenv函数的学习

PHP getenv函数和putenv函数的学习

(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...