jc-it/yii2-job-queue-recurring

作业队列实现 - 定时扩展。

v2.0.1 2022-08-16 11:42 UTC

This package is auto-updated.

Last update: 2024-09-16 16:19:01 UTC


README

此扩展提供了一个用于在yii2作业队列中存储定时作业的数据库实现。

$ composer require jc-it/yii2-job-queue-recurring

或者添加

"jc-it/yii2-job-queue-recurring": "<latest version>"

到你的composer.json文件的require部分。

配置

已添加定时作业的可能实现。此实现使用Cron表示法和Active Record模型存储重复性。它可以通过为AR模型和Handler创建自己的实现来轻松扩展。

要使用该包提供的实现使用定时作业

  • \JCIT\jobqueue\migrations添加到你的迁移命名空间,或者从包中的迁移扩展一个新的迁移并运行它们
  • ContainerMapLocator中注册\JCIT\jobqueue\jobs\RecurringJob::class\JCIT\jobqueue\jobHandlers\RecurringHandler::class(如配置中所示)
  • 将定时动作添加到控制器中
public function actions(): array
{
    return [
        'daemon' => \JCIT\jobqueue\actions\DaemonAction::class,
        'recurring' => \JCIT\jobqueue\actions\RecurringJobAction::class,
    ];
}
  • 运行动作,例如./yii job-queue/recurring
  • 将定时作业添加到数据库中,例如
$jobFactory = \Yii::createObject(\JCIT\jobqueue\interfaces\JobFactoryInterface::class);
$job = new \JCIT\jobqueue\models\activeRecord\RecurringJob([
    'name' => 'Hello world job',
    'description' => 'Say hello to the world every minute',
    'job_data' => $jobFactory->saveToArray(new \JCIT\jobqueue\jobs\HelloJob('world')),
    'cron' => '* * * * *'
]);
$job->save();

致谢