php进程信号,php 多进程中的信号问题

这段代码展示了如何处理子进程退出时的SIGCHLD信号。原本的代码由于sleep时间短于子进程退出,导致信号处理函数被频繁触发。解决方法是忽略SIGCHLD信号,通过pcntl_signal(SIGCHLD, SIG_IGN)来避免在子进程退出时的额外处理。这样可以优化程序性能,减少不必要的信号处理。
摘要由CSDN通过智能技术生成

1.以下代码sleep时间远小于20

// 当子进程退出时,会触发该函数

function sig_handler($sig) {

switch($sig) {

case SIGCHLD:

echo 'SIGCHLD received'."n";

}

}

pcntl_signal(SIGCHLD, "sig_handler");// 注册子进程退出时调用的函数

$start = time();

$sub_process_cnt = 20;

for($i=0;$i

sleep(1);

$pid = pcntl_fork();

if ($pid == 0) {

exit(-1);

}

}

$status = 0;

for ($k=0; $k

{

pcntl_waitpid(-1, $status );

}

$end = time();

$usage = $end - $start;

print "End, use: ".$usage." seconds" ;

?>

2.原因:sleep过程中被子进程返回的信号中断。

3.解决办法:

pcntl_signal(SIGCHLD, SIG_IGN ); //忽略子进程返回信号

全部代码如下

// 当子进程退出时,会触发该函数

function sig_handler($sig) {

switch($sig) {

case SIGCHLD:

echo 'SIGCHLD received'."n";

}

}

pcntl_signal(SIGCHLD, SIG_IGN );// 注册子进程退出时调用的函数

$start = time();

$sub_process_cnt = 20;

for($i=0;$i

sleep(1);

$pid = pcntl_fork();

if ($pid == 0) {

exit(-1);

}

}

$status = 0;

for ($k=0; $k

{

pcntl_waitpid(-1, $status );

}

$end = time();

$usage = $end - $start;

print "End, use: ".$usage." seconds" ;

?>

多线程中的信号机制--signwait()函数【转】

本文转载自:http://blog.csdn.net/yusiguyuan/article/details/14237277 在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别, ...

Qt5中的信号槽

Qt4中的信号槽 Qt4中的信号槽是通过SIGNAL,SLOT两个宏,将参数转换成字符串.Qt编译前,会从源码的头文件中提取由signal和slot声明的信号和槽的函数, 将其组成一张信号和槽对应的字 ...

Linux中多线程信号的处理

1. 博文:Linux多线程中使用信号-1  http://blog.csdn.net/qq276592716/article/details/7325250 2. 博文:Linux多线程信号总结  ...

QRadioButton类中Toggled()信号的使用方法

QRadioButton类中Toggled()信号的使用方法 1.说明 QRadioButton中,Toggled()信号是在Radio Button状态(开.关)切换时发出的,而clicked()信 ...

【转贴】gdb中的信号(signal)相关调试技巧

一篇不错的帖子,讲的是gdb中的信号(signal)相关调试技巧 转自Magic C++论坛  http://www.magicunix.com/index_ch.html  http://www.m ...

在 docker 容器中捕获信号

我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程.这些操作的本质都是通过从主机向容器发送信号 ...

PyQt5中的信号与槽,js 与 Qt 对象之间互相调用

一.PyQt中的信号与槽 信号(Signal)和槽(Slot)是Qt中的核心机制,用在对象之间互相通信.在Qt中每个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject ...

Flask学习【第6篇】:Flask中的信号

实例化补充 instance_path和instance_relative_config是配合来用的.这两个参数是用来找配置文件的,当用app.config.from_pyfile('settings ...

关于IP核中中断信号的使用---以zynq系统为例

关于IP核中中断信号的使用---以zynq系统为例 1.使能设备的中断输出信号 2.使能处理器的中断接收信号 3.连接IP核到处理器之间的中断 此处只是硬件的搭建,软件系统的编写需要进一步研究. 搭建 ...

随机推荐

MySQL 启动服务报错解决方案

标签:ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid) 概述 文章 ...

js实现网页防止被iframe框架嵌套及几种location.href的区别

首先我们了解一下几种location.href的区别简单的说:几种location.href的区别js实现网页被iframe框架功能,感兴趣的朋友可以了解下 首先我们了解一下:window.locat ...

DTW

DTW主要是应用在孤立词识别的算法,用来识别一些特定的指令比较好用,这个算法是基于DP(动态规划)的算法基础上发展而来的.这里介绍语音识别就先介绍下语音识别的框架,首先我们要有一个比对的模版声音,然后 ...

Mr.聂 带你成为web开发大牛——入门篇(上)

作为一名IT届的后生,当初也经历过懵懂无知的实习期,对那种无力感深有体会.在这,希望能用我这几年的开发经验,让各位即将踏入或者刚刚踏入web开发领域的新人们少走些弯路.鉴于这是入门篇,下面我就从零为大 ...

架构师入门:搭建基本的Eureka架构(从项目里抽取)

没有废话,直接上干货,理论部分大家可以看其它资料. 这里是部分关键代码,如果需要全部可运行的代码,请给本人留言. 在后继,还将给出搭建高可用Eureka架构的方式. 1 Eureka的框架图 在Eur ...

Java面试题—初级(5)

41.a.hashCode() 有什么用?与 a.equals(b) 有什么关系? hashCode() 方法对应对象整型的 hash 值.它常用于基于 hash 的集合类,如 Hashtable.H ...

Java Dom4j XML用法总结

1.新建XML文档:              Document doc = DocumentHelper.createDocument();             Element root = d ...

THREE.JS 场景世界坐标和平面二维坐标互转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值