dealerinspire / laravel-operations
操作允许您以程序化、数据库驱动的方式安排任务
v7.0.3
2020-11-12 21:17 UTC
Requires
- php: ^7.2.5
- laravel/framework: ^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^5.0
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_at
、started_run_at
和finished_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