来源:http://www.cnblogs.com/yjf512/p/3217615.html

PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。

假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$max = 800000;
$workers = 20;
$pids = array();
for($i = 0; $i < $workers; $i++){
    $pids[$i] = pcntl_fork();
    switch ($pids[$i]) {
        case -1:
            echo "fork error : {$i} \r\n";
            exit;
        case 0:
            $param = array(
                'lastid' => $max / $workers * $i,
                'maxid' => $max / $workers * ($i+1),
            );
            $this->executeWorker($input, $output, $param);
            exit;
        default:
            break;
    }
}
foreach ($pids as $i => $pid) {
    if($pid) {
        pcntl_waitpid($pid, $status);
    }
}

这里当pcntl_fork出来以后,会返回一个pid值,这个pid在子进程中看是0,在父进程中看是子进程的pid(>0),如果pid为-1说明fork出错了。

使用一个$pids数组就可以让主进程等候所有进程完结之后再结束了

PHP的pcntl多进程相关推荐

  1. php pcntl 多进程学习

    1.捕获子进程退出(监听SIGCHLD信号,然后调用 pcntl_wait 函数) declare(ticks=1);pcntl_signal(SIGCHLD, "sig_handler&q ...

  2. PHP 多任务秒级定时器的实现方法

    1.描述 最近在公司部署crontab的时候,突发奇想是否可以用PHP去实现一个定时器,颗粒度到秒级就好,因为crontab最多到分钟级别,同时也调研了一下用PHP去实现的定时器还真不太多,Swool ...

  3. 我本以为你们会写简历

    然而并不是 裁员的裁员 , 没裁员的正在准备裁员的路上 . 再加上一些人年终奖也已经骗到手了 , 依据优良传统 , 年后正是很多人辞职奔向更好的骗工资岗位的高峰期 . 所以 , 如何编简历 ( 注意是 ...

  4. 如何有计划,高效率,优简历应对面试

    前言 前一篇文章讲述了我在三月份毫无准备就去面试的后果,一开始心态真的爆炸,但是又不服气,一想到每次回来后家人朋友问我面试结果的期待脸,越觉得必须付出的行动来证明自己了. 面经传送门:一个1年工作经验 ...

  5. 【php】php编译pcntl以支持多进程

    今天需要写一个php多线程的程序,用了pcntl_fork(); 但在运行的时候出现了错误:undifined function pcntl_fork(); 说明php下还没有编译pcntl模块,在网 ...

  6. [PHP] 使用 pcntl 库实现PHP多进程

    最近因项目需要,需要大量同步数据,数据量基数在3000万条左右,因此想到了开启多进程来处理,下面是处理的完整代码,基于laravel 5.1框架. 这是经过实际环境验证过的,所以类似场景可以简单修改下 ...

  7. php多进程pcntl学习(一)

    pcntl在windows下无法使用,linux编译php时加上参数--enable-pcntl 即可.第一次使用pcntl模块,遇到了一些坑也慢慢填上了,这里简单记录下. 1. 子进程之间变量无法共 ...

  8. php 多进程设置,php多进程操作的三个实例

    1,php多进程并行操作实例 复制代码 代码示例: //多进程并行操作 /** * 入口函数 * 将此文件保存为 ProcessOpera.php * 在terminal中运行 /usr/local/ ...

  9. php 多进程 返回值,php多进程

    软件简介 php基于pcntl扩展实现的多进程框架. 有以下几种优点: 1.子进程数量的控制 2.钩子形式的运行子进程,方便代码实现 3.3种不同的方式导入任务(数组输入.运行次数输入.动态加载) 4 ...

最新文章

  1. 2021-7-14 深度学习服务器Linux终端网络训练training(顶会ECCV网络BiSeNet)
  2. 软件项目经理新手上路8 - 最后期限的迷局
  3. 关于计算机图形学的学习(转)
  4. 图像处理中常用数学知识
  5. 百余名欧洲议会议员发函 呼吁英国留在欧盟
  6. Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件
  7. 程序员的SOHO:接单到完成的全过程
  8. docker安装redis并将配置文件和数据文件映射到外部
  9. 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
  10. 集合源码(一)之hashMap、ArrayList
  11. FlasCC例子研究之bitmapdata
  12. 一个亿,啪一下就没了!
  13. 8000计算机论文范文,计算机毕业论文_计算机论文范文8000字_毕业论文8000字范例...
  14. Maven第9篇:多环境构建
  15. linux服务器实现AD域认证,Linux下用户启用Windows AD做集中认证
  16. 第十三届蓝桥杯大赛软件赛省赛真题
  17. java aud 转mp3_音频格式转换:微信语音aud格式转成wav格式
  18. 国王将金币作为工资,发放给忠诚的骑士。
  19. 辽宁计算机考研学校二本,二本院校逆袭985到底有多难?
  20. js:如何删除dom元素

热门文章

  1. 06_Flink命令行界面、作业管理示例、Savepoints、语法(run、通用配置、yarn-cluster、info、list、stop、cancel、savepoint等)
  2. Sqoop(二)常用命令及常数解析
  3. Elasticsearch概述、ES概念、什么是搜索、全文检索、Elasticsearch功能,什么是distributed document store(来自网络+学习资料)
  4. Spark Streaming从Kafka中拉取数据,并且使用过“窗口函数”统计一些流量信息
  5. cocos2dx 3.2之Lua打飞机项目
  6. Win7下Android模拟器中没有3G网络信号的解决办法
  7. 最小二乘法(一元)推导
  8. 异常处理python要求输入的为英文_python(异常处理)
  9. 中国工程师最喜欢的10大WiFi物联网芯片
  10. 深度残差网络和Highway网络