码迷,mamicode.com
首页 > Web开发 > 详细

php多进程模型 开箱即用

时间:2019-04-28 18:38:39      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:次数   回调函数   ref   process   fun   type   echo   形式   任务任务   

仓库地址

https://github.com/xieyong1023/MultiProcess

安装

使用composer

  1. 将仓库加到你的项目composer.jsonrepositories
{
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/xieyong1023/MultiProcess.git"
        }
    ]
}
  1. 安装
composer require "xieyong1023/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';
});

...
// 主进程继续执行...

php多进程模型 开箱即用

标签:次数   回调函数   ref   process   fun   type   echo   形式   任务任务   

原文地址:https://www.cnblogs.com/xieyong-p/p/10785550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!