php多进程编程

作者: 晨雨微风 | 来源:发表于2019-12-09 13:57 被阅读0次

// 建议php5.3以上,代码中自行调用pcntl_signal_dispatch();

if (!function_exists("pcntl_signal_dispatch")) {

    declare(ticks=1);

}

pcntl_signal(SIGCHLD, SIG_IGN); // 注册信号处理函数  如果父进程不关心子进程什么时候结束,设为SIG_IGN, 子进程结束后,内核会回收,并不再给父进程发送信号

$child_pids = [];

for ($i = 0; $i<3; $i++) {

    $child_pid = pcntl_fork();

    switch ($child_pid) {

        case -1:

            exit('fork fail!');

            break;

        case 0:

            echo '子进程开始,PID:' . getmypid() . PHP_EOL;

            sleep(rand(1,5));

            echo '子进程结束,PID:' . getmypid() . PHP_EOL;

            exit();

            break;

        default:

            $child_pids[] = $child_pid;

            echo '父进程-runing,PID:' . getmypid() . PHP_EOL;

            break;

    }

}

while (count($child_pids)) {

    if (!function_exists("pcntl_signal_dispatch")) {

        pcntl_signal_dispatch();

    }

    foreach ($child_pids as $key => $child_pid) {

        //$res = pcntl_wait($status, WNOHANG);

        $res = pcntl_waitpid($child_pid, $status, WNOHANG);

        if ($res == -1 || $res > 0) {

            echo '子进程退出, PID:' . $child_pid . PHP_EOL;

            unset($child_pids[$key]);

        } else {

            usleep(500000);

            echo 'WAIT' . PHP_EOL;

        }

}

}

echo '父进程退出' . PHP_EOL;

推荐: 浮生无事的博客

相关文章

  • php多进程编程

    // 建议php5.3以上,代码中自行调用pcntl_signal_dispatch();if (!functi...

  • Swoole Process

    简介 基于C语言封装的进程管理模块,方便php的多进程编程 内置管道、消息队列接口,可方便实现进程间通信 自定义信号管理

  • 9.8动态语言层并发处理视频

    相关概念什么是进程、线程、协程什么是多进程、多线程同步阻塞模型异步非阻塞模型PHP并发编程实践 进程是一个“执行中...

  • PHP中的“进程”系列1——PHP-FPM模型

    PHP中的“进程”系列 这个系列会分几个部分,从PHP-FPM进程模式起,到Linux进程,最后回到PHP本身谈一...

  • PHP的多进程编程pcntl

    阿里云服务器3折开售(点此直达) 可是PHP这个渣渣,在apache或者nginx中容器内根本用不了多进程或者多线...

  • 杀掉所有grep到的进程

    以php进程为例 grep php 查询关键字带有php的进程(查询结果会带有grep php)grep -v g...

  • PHP创建守护进程

    PHP 创建守护进程 执行守护进程

  • 2019-06-27

    用PHP玩转进程之二 — 多进程PHPServer 2018-09-02 系统设计 语言 PHP 经过用 PHP ...

  • [PHP] - 编译参数 --enable-pcntl

    官网:PHP - PCNTL 红框翻译 PHP进程控制支持 实现了类unix的进程创建、程序运行、消息处理、进程终...

  • php-fpm

    php-fpm说明 php-fpm是FastCGI的实现,并提供进程管理的功能。进程包括master进程和work...

网友评论

    本文标题:php多进程编程

    本文链接:https://www.haomeiwen.com/subject/ugmbgctx.html