多进程并发
一段通过 pcntl扩展fork方法实现多进程并发操作的代码
function insert($data){ $cnt = count($data); //测试数组大小 $slice = 9; //需要调用的进程数量 $master = array_chunk($data,floor($cnt/($slice+1))); $childList = []; echo "进程开始\r\n"; while($slice >= 0) { $pid = pcntl_fork(); //利用fork创建子进程 if($pid > 0){ $childList[$pid] = 1; echo $pid."\r\n"; //$pid>0表示当前还在执行父进程的代码 //这里最好啥都不做,每次执行pcntl_fork都会执行这里的代码。 //这里的代码执行完之后 会将$pid设置为0,然后jump到pcntl_fork代码之后,重新做判断; }elseif($pid == 0){ //这里写我们的逻辑 //子进程执行完之后务必需要关闭; exit(); }else { //程序发生错误也需要关闭程序 exit(); } $slice--; } // 等待所有子进程结束后回收资源 while(!empty($childList)){ $childPid = pcntl_wait($status); if ($childPid > 0){ unset($childList[$childPid]); } } }
相关推荐
-
php 抽奖概率算法 php
2019-1-7
-
红包随机金额 php
2019-1-7
-
php检测数据规则 php
2019-1-7
-
原生PHP生成 excl、word文件 php
2019-1-8
-
在线生成mysql数据字典 php
2019-1-7
-
php的FTP操作类 php
2019-1-7
-
Thinkphp各大支付平台在线支付集成源码 php
2019-1-7
-
php根据身份证号,自动返回对应的星座 php
2019-1-7
-
php上传图片生成缩略图 php
2019-1-8
-
转换秒钟为分钟 php
2019-1-8