2017-01-18 19 views
0

LaravelのCron APIを使用して月の最後の月曜日にのみ、を実行したい。私はそこに任意の解決策を得ることはありません月の最後の月曜日にcronを実行する - Laravel

https://laravel.com/docs/5.3/scheduling

:私はこれをチェックしています。

私ができる最も時:

$schedule->command(Commands\PerformerReminder::class)->monthly()->mondays(); 

しかし、私はそれだけではなく、前月曜日に、月の毎週月曜日にはcronを実行すると思います。

Laravelのcron APIを使用することができない場合は、通常のcronオプションを使用しても問題ありません。

私はこのようになると思う:

$schedule->command(Commands\PerformerReminder::class)->cron('* * * * *); 

私はcronを()関数内で値がどうなるか分かりません。

どのようなヘルプもうまくいくでしょう。

おかげで、

Parthボラ私はこれで作業することを得た方法について

use Carbon; 

$schedule->command(Commands\PerformerReminder::class)->mondays()->when(function(){ 
    // return true if this monday is last monday of this month 

    return (Carbon::now()->isSameDay($now->lastOfMonth(Carbon::MONDAY))); 
}); 
+0

(閉鎖); '? –

+0

ああはい。私はそのオプションを完全に監視します。私はそれを試してみましょう。ありがとう。 –

答えて

1

+0

'return $ lastmonday-> isToday();'で十分です –

+0

はい、ありがとうございます。 –

+0

'return new Carbon(今月最後の月曜日) - > isToday();'はさらに短くなりました。 –

1

アプリケーション/コンソール/ Kernal.php:

protected function schedule(Schedule $schedule) 
{ 
    $schedule->command(Commands\PerformerReminder::class)->when(function() { 
     return (new Carbon('last monday of this month'))->isToday(); 
    }); 
} 
関連する問題