本文译自 Matt Stauffer 的系列文章.
关于 Laravel 5.0 的事件调度程序(可以理解为定时任务),Eric Barnes 有一篇很长的文章。我这篇文章则会尽量简短:
Laravel 5.0 新增了一个框架内置的 cron 风格的令人难以置信的调度程序(与 Indatus 的 Dispatcher 类似)。只要在服务器上设置一个每分钟调用 artisan schedule:run
的 cron job, 一切就准备就绪了。
*/1 * * * * php /path/to/artisan schedule:run
举个例子,通过绑定下面的事件,可以实现每天自动清理密码提示记录:
$schedule ->command('auth:clear-reminders') // 清理密码提示 ->daily() // 每天执行 ->sendOutputTo($logPath) // 把输出写入日志 ->emailOutputTo('[email protected]'); // 把输出发到指定邮箱
你可以通过 command()
来调用 artisan 命令, call
来调用方法或函数, 或者 terminal()
来执行单行命令脚本:
$schedule->call('YourClass@someMethod')->twiceDaily(); $schedule->call(function() { // Do stuff })->everyFiveMinutes();
还可以借助回调来决定什么时候执行或不执行某些操作,通过 when()
或者 skip()
实现:
$schedule ->call('Mailer@BusinessDayMailer') // 执行类方法 ->weekdays() // 周一到周五执行 ->skip(function(TypeHintedDeciderClass $decider) { // 如果是节假日则跳过 return $decider->isHoliday(); });
这次的介绍非常简单,因为常用功能就是这么容易。但如果你需要全面理解这一新特性的话,可以阅读 Eric 在 Laravel-News 发表的文章: Laravel 5 Scheduler.
作者:小李刀刀
原文链接:[译]Laravel 5.0 之事件调度程序 (定时任务)
裁纸刀下版权所有,允许非商业用途转载,转载时请原样转载并标明来源、作者,保留原文链接。