php多进程模型 开箱即用

Posted xieyong-p

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php多进程模型 开箱即用相关的知识,希望对你有一定的参考价值。

仓库地址

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多进程模型 开箱即用的主要内容,如果未能解决你的问题,请参考以下文章

vscode是干啥用的

ACDC:开箱即用的多租户数据集成平台

收藏夹吃灰系列(十三):Springboot项目配置多数据源,实例演示 | 开箱即用,超级详细。

收藏夹吃灰系列(十三):Springboot项目配置多数据源,实例演示 | 开箱即用,超级详细。

springboot系列:实现多数据源配置,开箱即用|超级详细,建议收藏

springboot系列:实现多数据源配置,开箱即用|超级详细,建议收藏