kirillreutski/php-worker

该包的最新版本(v0.2.3.2)没有可用的许可证信息。

通用的PHP工作进程。数据库无关。需要CRON(或任何其他调度器)

v0.2.3.2 2023-04-03 07:36 UTC

This package is auto-updated.

Last update: 2024-10-03 10:53:46 UTC


README

  1. 重建状态更新——不仅限于挂起

php-worker

您的工人类应扩展 \kirillreutski\PhpWorker\GenericWorker。覆盖方法:public static function addLog(string $text): void; public function updateStatus(string $newStatus): void; // 每次需要更新状态时调用此方法,例如在数据库中 public function saveState(); // 当工人完成时调用此方法,例如在数据库中存储其数据

工人步骤的定义是在构造函数中设置的

public function __construct(array $wr) {

static::$steps = [
    Step::instant('firstStep'),
    Step::instant('secondStep'),
    /* here script stops till next run*/
    Step::long('thirdStep'),
    Step::instant('forthStep')
];

parent::__construct($wr);

}

步骤是类型为 kirillreutski\PhpWorker\Step 的对象;工人类应包含具有相同名称的非静态函数。

要运行工人,执行:$worker = Custom\RealWorker::init([...]); $worker->run();

还实现了处理运行器,它选择要运行的第一项任务:$worker = Custom\ProcessRunner::runNext(); ProcessRunner 扩展 GenericProcessRunner 并覆盖 public static function getProcessList (返回任务数组)

工人期望在传递的数组中包含以下数据:[ 'current_step' => CURRENT_STEP_NAME, // 我们开始的步骤 'data' => [], // 数据 "存储" - 在这里您的步骤存储执行数据(如果需要) 'handling_status' => CURRENT_WORKER_STATUS, // 等待下一次运行、进行中、完成 ]

即时步骤在单次运行中逐个完成。当工人遇到“长”步骤——并且它不是当前运行中的第一个步骤时——然后它挂起。否则,运行相应的步骤,如果此步骤返回 true——则转到下一个步骤;如果为 false——挂起并保持步骤不变;