Laravel Scheduler-在特定时间运行每月的特定日期

时间:2018-07-18 09:31:01

标签: 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);
    });

有什么方法可以将此任务设置为在特定时间运行?

2 个答案:

答案 0 :(得分:3)

您可以通过以下两种方法以多种方式实现它:

$schedule->command('payments:create')->monthlyOn(1, '15:00');
$schedule->command('payments:create')->monthlyOn(15, '15:00');

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

$schedule->command('payments:create')->monthlyOn(15, '15:00')->evenInMaintenanceMode();
$schedule->command('payments:create')->monthlyOn(1, '15:00')evenInMaintenanceMode();

另一种方式(从Laravel 5.4起)可以将活动安排为每月两次。

$schedule->command('payments:create')->twiceMonthly( 1, 15);

如果要在特定时间运行,请使用-> at();。方法。

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

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

 $schedule->command('payments:create')->cron('0 5 1,15 * *');

答案 1 :(得分:0)

您可以在每周的特定日期使用-> mondays()到-> sundays()。

然后在一天的特定时间使用-> at('23:59')。