[root@roverliang ipc]# php --version PHP 5.6.24 (cli) (built: Aug 15 2016 19:14:02) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
for ($i = 0; $i < 3; $i++) {
echo $i.PHP_EOL;
}
/**
* @param $signal 信号
*/
function signalHandal($signal)
{
switch ($signal) {
case SIGINT:
//do something
break;
case SIGHUP:
//do something
break;
default :
//do something
break;
}
}
//根据不同的信号,安装不同的信号处理器 pcntl_signal(SIGINT, 'signalHandal'); pcntl_signal(SIGHUP, 'signalHandal'); pcntl_signal(SIGUSR1, 'signalHandla');
//分配信号。 pcntl_signal_dispatch($signal);
<?php
$parentpid = posix_getpid();
echo "parent progress pid:{$parentpid}\n";
//定义一个信号处理函数
function sighandler($signal) {
if ($signal == SIGINT) {
$pid = getmypid();
exit("{$pid} process, Killed!".PHP_EOL);
}
}
//php version < 5.3 .每执行一条低级指令,就检查一次是否出现该信号。效率损耗很大。
//declare(ticks=1);
$child_list = [];
//注册一个信号处理器。当发出该信号的时候对调用已定义的函数
pcntl_signal(SIGINT, 'sighandler');
for($i = 0; $i < 3; $i++) {
$pid = pcntl_fork();
if ($pid == 0) {
//子进程
while (true) {
//调用已安装的信号信号处理器,为了检测是否有新的信号等待dispatching
pcntl_signal_dispatch();
echo "I am child: ".getmypid(). " and i am running !".PHP_EOL;
sleep(rand(1,3));
}
} elseif($pid > 0) {
$child_list[] = $pid;
} else {
die('fork fail!'.PHP_EOL);
}
}
sleep(5);
foreach ($child_list as $key => $pid) {
posix_kill($pid, SIGINT);
}
sleep(2);
echo "{$parentpid} parent is end".PHP_EOL;
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有