kirillreutski / php-worker
通用的PHP工作进程。数据库无关。需要CRON(或任何其他调度器)
README
- 重建状态更新——不仅限于挂起
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——挂起并保持步骤不变;