PHP的pcntl多进程
来源: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多进程相关推荐
- php pcntl 多进程学习
1.捕获子进程退出(监听SIGCHLD信号,然后调用 pcntl_wait 函数) declare(ticks=1);pcntl_signal(SIGCHLD, "sig_handler&q ...
- PHP 多任务秒级定时器的实现方法
1.描述 最近在公司部署crontab的时候,突发奇想是否可以用PHP去实现一个定时器,颗粒度到秒级就好,因为crontab最多到分钟级别,同时也调研了一下用PHP去实现的定时器还真不太多,Swool ...
- 我本以为你们会写简历
然而并不是 裁员的裁员 , 没裁员的正在准备裁员的路上 . 再加上一些人年终奖也已经骗到手了 , 依据优良传统 , 年后正是很多人辞职奔向更好的骗工资岗位的高峰期 . 所以 , 如何编简历 ( 注意是 ...
- 如何有计划,高效率,优简历应对面试
前言 前一篇文章讲述了我在三月份毫无准备就去面试的后果,一开始心态真的爆炸,但是又不服气,一想到每次回来后家人朋友问我面试结果的期待脸,越觉得必须付出的行动来证明自己了. 面经传送门:一个1年工作经验 ...
- 【php】php编译pcntl以支持多进程
今天需要写一个php多线程的程序,用了pcntl_fork(); 但在运行的时候出现了错误:undifined function pcntl_fork(); 说明php下还没有编译pcntl模块,在网 ...
- [PHP] 使用 pcntl 库实现PHP多进程
最近因项目需要,需要大量同步数据,数据量基数在3000万条左右,因此想到了开启多进程来处理,下面是处理的完整代码,基于laravel 5.1框架. 这是经过实际环境验证过的,所以类似场景可以简单修改下 ...
- php多进程pcntl学习(一)
pcntl在windows下无法使用,linux编译php时加上参数--enable-pcntl 即可.第一次使用pcntl模块,遇到了一些坑也慢慢填上了,这里简单记录下. 1. 子进程之间变量无法共 ...
- php 多进程设置,php多进程操作的三个实例
1,php多进程并行操作实例 复制代码 代码示例: //多进程并行操作 /** * 入口函数 * 将此文件保存为 ProcessOpera.php * 在terminal中运行 /usr/local/ ...
- php 多进程 返回值,php多进程
软件简介 php基于pcntl扩展实现的多进程框架. 有以下几种优点: 1.子进程数量的控制 2.钩子形式的运行子进程,方便代码实现 3.3种不同的方式导入任务(数组输入.运行次数输入.动态加载) 4 ...
最新文章
- 2021-7-14 深度学习服务器Linux终端网络训练training(顶会ECCV网络BiSeNet)
- 软件项目经理新手上路8 - 最后期限的迷局
- 关于计算机图形学的学习(转)
- 图像处理中常用数学知识
- 百余名欧洲议会议员发函 呼吁英国留在欧盟
- Android开发(4) | 系统权限、MediaPlayer类 和 VideoView类 的应用——播放多媒体文件
- 程序员的SOHO:接单到完成的全过程
- docker安装redis并将配置文件和数据文件映射到外部
- 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
- 集合源码(一)之hashMap、ArrayList
- FlasCC例子研究之bitmapdata
- 一个亿,啪一下就没了!
- 8000计算机论文范文,计算机毕业论文_计算机论文范文8000字_毕业论文8000字范例...
- Maven第9篇:多环境构建
- linux服务器实现AD域认证,Linux下用户启用Windows AD做集中认证
- 第十三届蓝桥杯大赛软件赛省赛真题
- java aud 转mp3_音频格式转换:微信语音aud格式转成wav格式
- 国王将金币作为工资,发放给忠诚的骑士。
- 辽宁计算机考研学校二本,二本院校逆袭985到底有多难?
- js:如何删除dom元素
热门文章
- 06_Flink命令行界面、作业管理示例、Savepoints、语法(run、通用配置、yarn-cluster、info、list、stop、cancel、savepoint等)
- Sqoop(二)常用命令及常数解析
- Elasticsearch概述、ES概念、什么是搜索、全文检索、Elasticsearch功能,什么是distributed document store(来自网络+学习资料)
- Spark Streaming从Kafka中拉取数据,并且使用过“窗口函数”统计一些流量信息
- cocos2dx 3.2之Lua打飞机项目
- Win7下Android模拟器中没有3G网络信号的解决办法
- 最小二乘法(一元)推导
- 异常处理python要求输入的为英文_python(异常处理)
- 中国工程师最喜欢的10大WiFi物联网芯片
- 深度残差网络和Highway网络