joesweeny / schedule
此包最新版本(0.1.1)无可用许可信息。
0.1.1
2018-03-02 10:28 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2024-09-29 04:43:14 UTC
README
一个极其轻量级的库,用于创建和过滤基于控制台的命令,这些命令可以按计划执行
使用方法
单个任务可以用或不用参数实例化
use JoeSweeny\Schedule\Task; $task1 = new Task('delete:files'); $task2 = new Task('notify:users', ['--admin']);
实例化时,可以添加任务频率,以便让计划知道何时需要运行任务
use JoeSweeny\Schedule\Task; $task1 = new Task('delete:files'); // Task will run every Monday at 00:00 $task1->weekly(); // Additional frequency methods can be chained to the Task to be more specific $task2 = new Task('notify:users', ['--admin']); // Task will run every Wednesday at 09:00AM $task2->wednesdays()->at('09:00'); // Note any Task without a frequency specified will automatically run every minute of every day
可以将单个任务添加到计划中
use JoeSweeny\Schedule\Task; use JoeSweeny\Schedule\Schedule; $task1 = (new Task('delete:files'))->sundays(); $task2 = new Task('notify:users', ['--admin']); $schedule = new Schedule; $schedule->addTask($task1)->addTask($task2); $schedule->getTasks() // Will return [(new Task('delete:files'))->sundays(), new Task('notify:users', ['--admin'])]
一旦计划中有了任务,就可以根据当前需要运行的任务过滤任务
use JoeSweeny\Schedule\Task; use JoeSweeny\Schedule\Schedule; $task1 = (new Task('delete:files'))->sundays(); $task2 = new Task('notify:users', ['--admin']); $schedule = new Schedule; $schedule->addTask($task1)->addTask($task2); $schedule->getDueTasks(); // Will return an array of Task objects ready to be executed
一旦过滤出待执行的任务,它们可以由消费应用单独执行。示例使用Symfony Console,尽管可以使用其他库
use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\BufferedOutput; use JoeSweeny\Schedule\Task; use JoeSweeny\Schedule\Schedule; $schedule = new Schedule; $application = new Application('CLI Application'); $schedule ->addTask((new Task('delete:files'))->sundays()) ->addTask(new Task('notify:users', ['--admin'])); $due = $schedule->getDueTasks(); foreach($due as $task) { $application->run(new StringInput($task->execute()), $output = new BufferedOutput); }