php多进程模型 开箱即用
仓库地址
https://github.com/xieyonn/MultiProcess
安装
使用composer
- 将仓库加到你的项目
composer.json
的repositories
下
{
"repositories": [
{
"type": "git",
"url": "https://github.com/xieyonn/MultiProcess.git"
}
]
}
- 安装
composer require "xieyonn/MultiProcess"
示例
规定子进程数量,主进程同时创建多个子进程执行同一个任务
可以传入回调函数,全部任务执行完后执行
use MultiProcess\ProcessClone;
$mum = 2; // 子进程数量
$call = function () { // 任务以闭包的形式传入
sleep(5);
echo "hello";
};
$p = new ProcessClone($num, $call);
$callback = function() {
echo 'done';
};
// 指定callback,任务执行完后执行
$p->run($callback);
...
// 主进程继续执行...
规定子进程数量上限
,接受数组
形式的任务参数,每个参数会传入给任务。任务执行次数取决于参数数组大小。
可以传入回调函数,全部任务执行完后执行
use MultiProcess\ProcessClone;
$num = 3;
$call = function ($begin, $end) {
sleep(5);
echo "{$begin} ~ {$end}\n";
};
// 任务参数(索引数组) key => name 分别代码传给任务闭包的参数名、参数值
$params = [
[
'begin' => '2018-01-01',
'end' => '2018-01-02',
],
[
'begin' => '2018-01-02',
'end' => '2018-01-03',
],
[
'begin' => '2018-01-03',
'end' => '2018-01-04',
],
[
'begin' => '2018-01-04',
'end' => '2018-01-05',
],
[
'begin' => '2018-01-05',
'end' => '2018-01-06',
],
];
$p = new ProcessCloneParams($num, $call, $params);
$p->run(function() {
echo 'done';
});
...
// 主进程继续执行...