我需要每隔2周或14天运行laravel cron。但没有找到任何解决方案。 我也在搜索laravel文档https://laravel.com/docs/5.5/scheduling 并找到了这个选项
->weekly();
但它每周运行一次。 我也搜索了其他选项并找到了这个 laravel schedule task to run every 10 days of a month 但它只在一个月的前10天起作用
$schedule->command('log:test')->cron('0 0 1-10 * *');
如果您事先有任何解决方案,请帮助我。
答案 0 :(得分:2)
您可以将daily()与when()方法一起使用,并在为任务添加适当的约束时使用。例如,每个月在1,16天运行任务:
$schedule->command('sitemap:sitemap_xml_generate')->daily()->when(function () {
$days = [1,16];
$today = Carbon::today();
return in_array($today->day, $days);});
或者您可以使用此
$schedule->command('sitemap:sitemap_xml_generate')->cron('0 0 1,16 * *');
cron('0 0 1,16 * *') - >参数是'分钟小时日(我们可以指定由逗号分隔的多个日期)月份'
答案 1 :(得分:0)
$schedule->command('log:test')->cron('0 0 */14 * *');
2017-09-15 00:00:00
2017-09-29 00:00:00
2017-10-01 00:00:00
2017-10-15 00:00:00
2017-10-29 00:00:00
或者您可以运行自定义
$schedule->command('log:test')->weekly()->when(function () {
return ((Carbon::now()->day % 2) === 1); //bool only for example
});
答案 2 :(得分:0)
$schedule->command('command_name')->weekly()->mondays()->when(function () {
return date('W') % 2;
})->at("13:38");
该函数将每两周返回1,因此该命令将每两周调用一次。