如何在 laravel 中每 3 个月执行一次 cron 作业?

How to do a every 3 months cron job in laravel?

我正在使用 laravel 每 3 个月凌晨 2 点将作业安排到 运行,所以我创建了:

$schedule->command('clean:market-history')->cron('0 0 0,2 ? 1/3 * *');

但根据我的研究(通过使用:this reference),这表明它将 运行 每 3 个月 从 1 月的凌晨 2 点开始。我大部分都做对了,我确实希望它每三个月凌晨 2 点 运行,但是如果它在 1 月开始并不意味着如果我在 8 月部署,例如,它不会开始 运行宁到一月?

一些资源声明要使用:*/3 然而,上面链接的网站声明相同,从 1 月凌晨 2 点开始。

这是正确的还是我遗漏了什么?有人可以解释一下吗?

如果你想运行你的命令每季度一次(一月、四月、七月、十月的第一天),你可以使用Laravel的预制季度功能:

$schedule->command('YourCommandHere')->quarterly('02:00')->timezone('America/New_York');    

如果你想运行这个命令从执行之日起每三个月执行一次(即从现在开始每3个月执行一次)你可以使用Laravel的cron函数,它可以让你通过自定义cron 行和那个 cron 行看起来像这样:

$schedule->command('YourCommandHere')->cron('0 2 * */3 *')->timezone('America/New_York');   

您可以配置 laravel 的 cron 函数的任何迭代。只需使用我在下面分享的 crontab.guru 参考。这是一个救星。另外,如果您打算使用与服务器设置的时区不同的时区,请不要忘记像我一样定义时区。

要获取所有 Laravel 计划功能,请查看此文档:https://laravel.com/docs/8.x/scheduling

我最常使用的 url 来确定我的 cron 行应该是什么样子:https://crontab.guru