如何在每2周或14天后运行laravel cron

时间:2017-09-11 07:19:17

标签: laravel laravel-5

我需要每隔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 * *');

如果您事先有任何解决方案,请帮助我。

3 个答案:

答案 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,因此该命令将每两周调用一次。