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