如何在Heroku中设置Laravel 5的任务调度?

时间:2016-02-02 10:46:54

标签: laravel heroku cron scheduled-tasks

我试图在how to Run Cron Jobs上关注Laravel文档, 我想添加这个

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

但我不知道如何将它添加到Heroku。

4 个答案:

答案 0 :(得分:4)

我创建了这个每分钟运行一次的调度程序,它是您自己应用程序的一部分。

https://gist.github.com/robbydooo/65bf341ea0f4081150b945bfb1d38d3c

它会创建一个名为Scheduler的新Dyno类型,您可以从中启动。

确保在队列中运行作业,以避免此调度程序每分钟运行一次。

要在Laravel 5.4+中使用此调度程序,请将此文件添加到/app/Console/Commands/RunScheduler.php 在app / Console / Kernel.php中注册此文件

protected $commands = [
…
Commands\RunScheduler::class
…
]

将此行添加到Procfile:

scheduler: php -d memory_limit=512M artisan schedule:cron

答案 1 :(得分:1)

Heroku有一个cron调度程序插件,可用于计划任务。

您可以像这样安装:

$ heroku addons:create scheduler:standard

有关详细信息,请查看this article

答案 2 :(得分:0)

您将无法按照文档中的指定配置Laravel Scheduler。您需要安装Heroku Scheduler附加软件并添加 php artisan schedule:run ,但这只会让您每隔10分钟就能完成预定的作业,这样做会阻止Laravel Scheduler频率选项可以正常工作。

我写了一篇关于如何在Heroku上使用Laravel Scheduler的指南,这是一个简单的解决方案,但它需要一些额外的编码: https://medium.com/@nicolasbistolfi/running-laravel-scheduled-jobs-on-heroku-3a7bd6fa2481

答案 3 :(得分:0)

Cron To Go 是一个附加组件,它允许您每分钟运行一次 Laravel 的任务调度程序(cron 中的 * * * * *)。只需安装附加组件,添加以 * * * * * 作为日程安排和 php artisan schedule:run 作为命令的作业,高枕无忧!如果您的 Laravel 日志没有显示在调度程序中,则可以使用 here 中描述的日志路由快速修复。