Laravel 调度程序 - 在特定时间运行一个月的特定日期

dip*_*dip 3 php laravel-5.3

我想在特定时间的特定日期运行任务。现在我使用此代码在每个月的第 1 天和第 15 天运行任务。

$schedule->command('payments:create')->daily()->when(function ()
    {
        $days = [1,15];
        $today = Carbon::today();

        return in_array($today->day, $days);
    });
Run Code Online (Sandbox Code Playgroud)

有没有办法设置这个任务在这些天的特定时间运行?

Ami*_*esh 11

您可以通过多种方式实现它,以下两个班轮:

$schedule->command('payments:create')->monthlyOn(1, '15:00');
$schedule->command('payments:create')->monthlyOn(15, '15:00');
Run Code Online (Sandbox Code Playgroud)

如果你想强制任务在维护模式下运行,你可以使用evenInMaintenanceMode方法:

$schedule->command('payments:create')->monthlyOn(15, '15:00')->evenInMaintenanceMode();
$schedule->command('payments:create')->monthlyOn(1, '15:00')evenInMaintenanceMode();
Run Code Online (Sandbox Code Playgroud)

另一种方式(Laravel 5.4 以后) 在线安排活动每月运行两次。

$schedule->command('payments:create')->twiceMonthly( 1, 15);
Run Code Online (Sandbox Code Playgroud)

如果你想在特定时间运行,那么使用 ->at(); 方法。

$schedule->command('payments:create')->twiceMonthly( 1, 15)->at('13:00');// At 1 PM of every 1st and 15th of every month
Run Code Online (Sandbox Code Playgroud)

在每个月的 1 和 15 的午夜执行 Crontab 的另一种方法

 $schedule->command('payments:create')->cron('0 5 1,15 * *');
Run Code Online (Sandbox Code Playgroud)