dealerinspire/laravel-operations

操作允许您以程序化、数据库驱动的方式安排任务

v7.0.3 2020-11-12 21:17 UTC

This package is auto-updated.

Last update: 2024-09-13 05:19:35 UTC


README

操作允许您以程序化、数据库驱动的方式安排任务。通过在数据库中创建操作记录并调用操作器以将任何准备运行的操作排队,您可以安排未来较长时间的任务,并跟踪所有已运行的操作。

安装

使用Composer安装此包。

composer require dealerinspire/laravel-operations

服务提供程序将自动注册,但您需要发布配置文件。

php artisan vendor:publish --provider="DealerInspire\Operations\OperationServiceProvider"

用法

以下是一个非常简单的操作的示例

class ExampleOperation extends Operation
{
    public function run()
    {
        // Logic goes in here to be executed when the operation is run.
    }
}

如果您想使用依赖注入,您可以在run函数中添加类型提示参数,以便在运行时注入。

操作是Eloquent模型,可以具有您想要的任何列。唯一的要求是它们有三个额外的时间戳列,should_run_atstarted_run_atfinished_run_at

为了确保操作器知道您的所有操作,您应该在config\operations.php文件中添加类名。

'operations' => [
    \App\Operations\ExampleOperation::class,
],

要将任何准备运行的操作放入您的作业队列,您应该调用操作器的queue函数。

// Using the facade.

use DealerInspire\Operations\Facades\Operator;

// ...

Operator::queue();
// Using an Operator instance.

use DealerInspire\Operations\Operator;

// ...

$operator = new Operator();
$operator->queue();

任何具有过去时间戳的should_run_at并且started_run_at值为null的操作(而且没有被删除)将被放入您的作业队列。

当操作被放入队列时,它的started_run_at时间戳将被设置为当前时间(而不是作业实际开始由工作进程处理时)。一旦操作被工作进程运行,finished_run_at时间戳将被设置。

您可以通过运行make:operation来快速创建新的操作(这些操作将被放置在您的App\Operations目录中)。

php artisan make:operation MyNewOperation

还有一个--migration标志,您可以使用它来创建具有必要时间戳的迁移。

文档

有关最佳实践以及如何有效地使用操作的更深入信息。

熟悉使用操作后,您可以查看一些有关更高级功能的文档。

许可证

MIT © Dealer Inspire