cr-mao/multi-process-worker

轻松实现多进程任务

1.0.0 2021-06-16 01:40 UTC

This package is auto-updated.

Last update: 2024-09-29 05:43:12 UTC


README

使用多进程工作器快速轻松地完成任务。

简介

提供子进程工作空间,你可以在onWork函数中的子工作空间中执行任务。它还提供了快速轻松获取工作内容的功能,你可以查看MultiProcessWorker::getWorkContentByIdModeMultiProcessWorker::getWorkContentByOffsetMode

要求

  • php > 7.1.3

  • 启用ext-pcntl

  • ext-swoole可选

安装

$ composer require cr-mao/multi-process-worker

用法

use Crmao\MultiProcessWorker\MultiProcessWorker;

$workNum = 4;
$worker = new MultiProcessWorker($workNum, MultiProcessWorker::modePcntl);
//$worker = new MultiProcessWorker($workNum, MultiProcessWorker::modeSwooleProcess);
$worker->onWork = function ($workPage, $pid) use ($workNum) {
    echo PHP_EOL;
    echo "工作空间编号:{$workPage},进程id:{$pid}" . PHP_EOL;

    //提供便捷函数,快速获得任务内容 ,模式一:id模式
    list($beginId, $endId, $isLastWorkPage) = MultiProcessWorker::getWorkContentByIdMode($workPage, 4, 1, 100001);
    //  select * from xxx where id >={$beginId} AND id <= {$endId},每个进程内可以自行在分页处理,  最后一个工作空间,你也许要考虑数据新增情况
    echo "begin mysql id is {$beginId}, end mysql id is {$endId}, 是否是最后一个工作空间:{$isLastWorkPage}";
    echo PHP_EOL;
    
    //提供便捷函数,快速获得内容 ,模式二: offset,limit 模式
    list($offset, $limit, $isLastWorkPage) = MultiProcessWorker::getWorkContentByOffsetMode($workPage, $workNum, 10001);
    echo "offset is {$offset}, limit is {$limit}, 是否是最后一个工作空间:{$isLastWorkPage} ";
    echo PHP_EOL;
    sleep(3);
};
$worker->start();

贡献

github.com:cr-mao/multi-process-worker 你可以通过以下三种方式之一进行贡献

  1. 使用问题跟踪器提交错误报告。
  2. 问题跟踪器上回答问题或修复错误。
  3. 贡献新功能或更新wiki。

代码贡献过程并不非常正式。你只需确保遵循PSR-0、PSR-1和PSR-2编码规范。任何新的代码贡献都必须附带相应的单元测试(如果适用)。

许可证

MIT

链接