php多進程模型 開箱即用

倉庫地址

https://github.com/xieyonn/MultiProcessphp

安裝

使用composergit

  1. 將倉庫加到你的項目composer.jsonrepositories
{
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/xieyonn/MultiProcess.git"
        }
    ]
}
  1. 安裝
composer require "xieyonn/MultiProcess"

示例

規定子進程數量,主進程同時建立多個子進程執行同一個任務

能夠傳入回調函數,所有任務執行完後執行github

use MultiProcess\ProcessClone;

$mum = 2; // 子進程數量
$call = function () { // 任務以閉包的形式傳入
    sleep(5);
    echo "hello";
};
$p = new ProcessClone($num, $call);

$callback = function() {
    echo 'done';
};
// 指定callback,任務執行完後執行
$p->run($callback);

...
// 主進程繼續執行...

規定子進程數量上限,接受數組形式的任務參數,每一個參數會傳入給任務。任務執行次數取決於參數數組大小。

能夠傳入回調函數,所有任務執行完後執行json

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';
});

...
// 主進程繼續執行...
相關文章
相關標籤/搜索