futur/udschedule
Composer 安装命令:
composer require futur/udschedule
包简介
UserDefinableSchedule allows you to create user defined schedule tasks
README 文档
README
UDSchedule
User Definable Schedule is the laravel package which allows you to create user defined schedule tasks.
Futur with love <3
Installation
Install via composer
composer require futur/udschedule
Migrate package migration with expressions table
php artisan migrate
Define scheduler model
...
use Futur\UDSchedule\Interfaces\UDSchedulerInterface;
use Futur\UDSchedule\Traits\UDScheduler;
class User extends Authenticatable implements UDSchedulerInterface
{
use HasFactory, Notifiable, UDScheduler;
...
Define scheduled class, could be any class implementing UDSchedulable interface, such a model or class stored in app\Scheduled folder, etc
...
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.
}
...
}
Usage
Scheduling
After installation, everything you need is call UDSchedule facade and define a scheduler and a schedulable with schedule type:
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->...
->set();
Available schedule types:
- monthly with any day of a month as a value
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->monthly(23)
->set();
- weekly with any day of a week as a value
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekly('Sunday')
->set();
- daily with time (HH:MM) as a value
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->daily('12:05')
->set();
- at with time (HH:MM) as a value, to specify time of schedule
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekly('Monday')
->at('14:23')
->set();
- weekdays
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekdays()
->set();
- weekends
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->weekends()
->set();
- lastDayOfMonth
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->lastDayOfMonth()
->set();
- custom expression if you want to specify cron expression by your own
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->custom('00 23 * * *')
->set();
- timezone specify timezone of user defining schedule
UDSchedule::schedule()
->forScheduler($scheduler)
->withSchedulable(UDScheduledObject::class)
->custom('00 23 * * *')
->timezone('MST')
->set();
Expression interpreter
Sometimes it's needed to interpret expressions from udscheduled tasks to understandable look. You can do so using interpretExpression method of UDSchedule facade:
$scheduled = UDSchedule::interpretExpression(
$scheduler
->udScheduledBySchedulable(UDScheduledObject::class)
->expression
);
will return:
[
'type' => 'monthly',
'value' => '3',
'at' => '11:00'
]
统计信息
- 总下载量: 56
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-12-10