php 多进程处理
来源:互联网 发布:阿萨辛捏脸数据 编辑:程序博客网 时间:2024/06/07 04:03
<?php
/**
* @copyright nidongde
* @author fanyijie
**/
class ProcessPool{ private $workProcess; private $globalProcessSize; private $currentSize; public function __construct($size = 5) { declare(ticks = 1); $this->workProcess = array(); $this->globalProcessSize = $size; $this->currentSize = 0; pcntl_signal(SIGCHLD,array(&$this,"childFinished")); } private function childFinished(){ while($pid = pcntl_waitpid(-1, $status, WNOHANG) > 0 ){ echo 'child finished '.$pid."\n"; unset($this->workProcess[$pid]); $this->currentSize--; } } public function addMission($object, $method, $params) {
//若存在db等资源共享情况,建议重新生成object $class = get_class($object); $reflectClass = new ReflectionClass($class); $methods = $reflectClass->getMethods(); $methodFunction = null; foreach($methods as $reflectMethod){ if($reflectMethod->getName() == $method){ $methodFunction = $reflectMethod; break; } } if (!empty($methodFunction)) { while ($this->currentSize >= $this->globalProcessSize) { sleep(1); } $pid = pcntl_fork(); if ($pid == 0) { $ret = $methodFunction->invoke($object, $params); //子进程结束 echo $ret." pid :".getmypid(); exit(0); } else { $this->currentSize++; $this->workProcess[] = $pid; } } }}
0 0
- php 多进程处理
- php多进程处理
- PHP nodejs 多进程处理
- PHP后台多进程任务处理类
- PHP多进程处理并行处理任务实例
- PHP多进程处理并行处理任务实例
- PHP多进程处理并行处理任务实例
- liunx下php处理多进程样例
- PHP使用多进程解决办法处理大数据/内存泄漏
- python 启动多个php进程处理数据
- PHP利用Gearman来处理并行多进程问题
- PHP使用QPM实现多进程并行任务处理程序
- PHP 使用 QPM 实现多进程并行任务处理程序
- [并发] -- PHP并发多进程处理利器Gearman
- Socket学习 - PHP+Socket多进程处理请求学习
- Socket学习 - php+Socket多进程处理速学:防止子进程无限增加
- python多进程处理
- PHP多进程编程
- android 内存溢出原因与解决办法
- HBase基本概念和hbase shell常用命令用法
- Git常用操作命
- matlab 2014b 和matlab 2015a安装到ubuntu上时图形库问题的解决办法
- J-link V8固件升级
- php 多进程处理
- eclipse 无法加载 android sdk 列表
- IOS中添加语音播放文字
- vps等首先确认安全配置
- IOS 把格式化的JSON字符串转换成字典
- Android自定义时间轴的实现
- unity ngui学习(一)
- Android性能优化(5-10)
- 来波NSDate小技能:)根据当前时间确定所给时间是多少秒之前