资讯专栏INFORMATION COLUMN

PHP多进程实例

yy736044583 / 1051人阅读

摘要:必须加载扩展总进程的数量执行的脚本数量执行的脚本数量的数组展开如果父进程不关心子进程什么时候结束子进程结束后,内核会回收。这里子进程得到的为所以这里是子进程执行的逻辑。

 __DIR__ . "/run.php",  "pid" =>$i ,"total" =>$totals);
}

/*
展开:$cmdArr
Array
(
    [0] => Array
        (
            [path] => /var/www/html/company/pcntl/run.php
            [pid] => 0
            [total] => 3
        )
    [1] => Array
        (
            [path] => /var/www/html/company/pcntl/run.php
            [pid] => 1
            [total] => 3
        )
    [2] => Array
        (
            [path] => /var/www/html/company/pcntl/run.php
            [pid] => 2
            [total] => 3
        )
)
*/

pcntl_signal(SIGCHLD, SIG_IGN);    //如果父进程不关心子进程什么时候结束,子进程结束后,内核会回收。
foreach ($cmdArr  as   $cmd) {
    $pid = pcntl_fork();    //创建子进程
    //父进程和子进程都会执行下面代码
    if ($pid == -1) {
        //错误处理:创建子进程失败时返回-1.
        die("could not fork");
    } else if ($pid) { //这里$pid>0
        //父进程会得到子进程号,所以这里是父进程执行的逻辑
        //如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成:
        pcntl_wait($status,WNOHANG); //等待子进程中断,防止子进程成为僵尸进程。
    } else { //这里$pid=0
        //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
        $path   = $cmd["path"];
        $pid = $cmd["pid"] ;
        $total = $cmd["total"] ;
        echo exec("/usr/bin/php {$path} {$pid} {$total}")."
";
        exit(0) ;
    }
}
?>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22102.html

相关文章

  • PHP并发IO编程之路

    摘要:下文如无特殊声明将使用进程同时表示进程线程。收到数据后服务器程序进行处理然后使用向客户端发送响应。现在各种高并发异步的服务器程序都是基于实现的,比如。 并发 IO 问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接 Fork 进程,到 Worker 进程池/线程池,到现在的异步IO、协程。PHP 程序员因为有强大的 LAMP 框架,对这类底层方面的知识知之甚少,本文目的就是详细介...

    Riddler 评论0 收藏0
  • PHP进程初探 --- 开篇

    摘要:所以我们只说的多进程,至于多线程就暂时放到一边儿。出来新进程则成为子进程,原进程则成为父进程,子进程拥有父进程的副本。在父进程中返回子进程的进程,在子进程内部本身返回数字。 [原文地址:https://blog.ti-node.com/blog...] 实际上PHP是有多线程的,只是很多人不常用。使用PHP的多线程首先需要下载安装一个线程安全版本(ZTS版本)的PHP,然后再安装pec...

    wh469012917 评论0 收藏0
  • Mix PHP V2 实例:协程池异步邮件发送守护程序

    摘要:消费者开发使用本例时,请确保你使用的编译时开启了本例我们采用的守护程序协程池来完成一个超高性能的邮件发送程序。 去年 Mix PHP V1 发布时,我写了一个多进程的邮件发送实例: 使用 mixphp 打造多进程异步邮件发送,今年 Mix PHP V2 发布,全面的协程支持让我们可以使用一个进程就可达到之前多个进程都无法达到的更高 IO 性能,所以今天重写一个协程池版本的邮件发送实例。...

    lauren_liuling 评论0 收藏0
  • PHP 进程系列笔记(三)

    摘要:本节讲解几个多进程的实例。新开终端,我们使用命令查看进程可以看到个进程个主进程,个子进程。使用命令结束子进程,主进程会重新拉起一个新的子进程。 本节讲解几个多进程的实例。 多进程实例 Master-Worker结构 下面例子实现了简单的多进程管理: 支持设置最大子进程数 Master-Worker结构:Worker挂掉,Master进程会重新创建一个

    focusj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<