未来 / udschedule
用户自定义计划允许您创建用户定义的计划任务
1.1.6
2020-12-16 14:40 UTC
Requires
- php: >=7.2.5
- laravel/framework: >=7.0
Requires (Dev)
- laravel/legacy-factories: 1.x-dev
- orchestra/testbench: 9999999-dev
- phpunit/phpunit: ^8.4 || ^9.0
README
UDSchedule
用户自定义计划是laravel包,允许您创建用户定义的计划任务。 未来用爱 <3
安装
使用composer安装
composer require futur/udschedule
使用表达式表迁移包迁移
php artisan migrate
定义调度模型
... use Futur\UDSchedule\Interfaces\UDSchedulerInterface; use Futur\UDSchedule\Traits\UDScheduler; class User extends Authenticatable implements UDSchedulerInterface { use HasFactory, Notifiable, UDScheduler; ...
定义计划类,可以是任何实现UDSchedulable接口的类,例如存储在app\Scheduled
文件夹中的模型或类等
... use Futur\UDSchedule\Interfaces\UDSchedulable; use Futur\UDSchedule\Interfaces\UDSchedulerInterface; class Report implements UDSchedulable { public function doUDScheduled(UDSchedulerInterface $UDScheduler) { //Define anything you want to shedule here //Sending email reminders, etc. } ... }
用法
调度
安装后,您需要做的就是调用UDSchedule外观并定义一个调度和一个计划,并指定计划类型
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->...
->set();
可用的计划类型
- monthly,值可以是月份中的任何一天
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->monthly(23)
->set();
- weekly,值可以是周中的任何一天
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekly('Sunday')
->set();
- daily,值可以是时间(HH:MM)
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->daily('12:05')
->set();
- at,值可以是时间(HH:MM),用于指定计划时间
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekly('Monday')
->at('14:23')
->set();
- 工作日
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekdays()
->set();
- 周末
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekends()
->set();
- 最后一天
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->lastDayOfMonth()
->set();
- custom 表达式,如果您想自己指定cron表达式
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->custom('00 23 * * *')
->set();
- timezone 指定定义计划的用户的时区
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->custom('00 23 * * *')
->timezone('MST')
->set();
表达式解释器
有时需要将udscheduled任务中的表达式解释为可理解的形式。您可以使用UDSchedule外观的interpretExpression方法来完成此操作
$scheduled = UDSchedule::interpretExpression(
$scheduler
->udScheduledBySchedulable(UDScheduledObject::class)
->expression
);
将返回
[
'type' => 'monthly',
'value' => '3',
'at' => '11:00'
]