<?php
$root_dir = dirname(__FILE__);
/**
* 多进程操作类
* Class FileOperation
*/
class MultipleProcesses{
/**
* 运行
* @param $data 数据【品牌数组】
* @param int $workers 进程熟
*/
function run($data, $workers=20) {
$max = count($data);
$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($i, $param);//TODO 调用方法
exit;
default:
break;
}
}
foreach ($pids as $i => $pid) {
if($pid) {
pcntl_waitpid($pid, $status);
}
}
}//fun end
}//class end
$root_dir = dirname(__FILE__);
/**
* 多进程操作类
* Class FileOperation
*/
class MultipleProcesses{
/**
* 运行
* @param $data 数据【品牌数组】
* @param int $workers 进程熟
*/
function run($data, $workers=20) {
$max = count($data);
$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($i, $param);//TODO 调用方法
exit;
default:
break;
}
}
foreach ($pids as $i => $pid) {
if($pid) {
pcntl_waitpid($pid, $status);
}
}
}//fun end
}//class end