来源: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. javascript js异步加载
  2. 服务器堡垒机登录方式
  3. java编程启蒙_程序设计入门—Java语言
  4. Delphi 中的字符串函数(6) - StrUtils 中的 Ansi 字符串函数
  5. 常用工具——Rsync
  6. RHEL脚本更换YUM源(sohu)
  7. java hsqldb_Hsqldb入门
  8. matlab矩阵排序sort,Matlab 用sort函数排序
  9. 个人博客页面的简单实现
  10. Latex常用公式写法(一)
  11. caffe详解之损失函数
  12. 大数据金融,这个“跨界整合”会带来什么
  13. IT技术支持工程师岗位职责
  14. 氢os android系统耗电,安卓用久了会卡是定制系统惹的祸?氢OS:这锅我不背!
  15. BZOJ4627: [BeiJing2016]回转寿司
  16. openwrt更改wlan口
  17. 手把手教你如何自己设计实现一个深度学习框架(附代码实现)
  18. 致远OA流程报 scan null error
  19. WRF-Chem笔记——模式运行流程
  20. Scratch 3.0源码 之 多语言实现

热门文章

  1. 用 Freemarker 生成 word 文档
  2. 关于MULE ESB相关的介绍
  3. 取第N个排序的元素之Mysql存储过程动态SQL order by offset实现案例
  4. Qt学习笔记之QTranslator
  5. caffe添加层:Focal Loss的caffe实现
  6. windows下实现c++版faster-rcnn
  7. JAVA NIO编程入门(二)
  8. 设计模式之迭代子模式
  9. 调度器Quartz的简述与使用总结
  10. Layer 父子页面之间的交互