5.6
memcached
かredis
を導入し、全サーバが同一のキャッシュサーバに向いていれば、onOneServer()
メソッドで一回だけ処理することが出来る。。
$schedule->command('report:generate')
->fridays()
->at('17:00')
->onOneServer();
5.5
5.5にはonOneServer()
メソッドがないので代わりに以下を使う。
jdavidbakr/MultiServerEvent: Laravel plugin to allow scheduled events across multiple servers with the same scheduler to not overlap.
こちらはDBでロック管理をしているので、同じDBに向いている必要がある。
初期設定をしたら後はwithoutOverlappingMultiServer()
メソッドで一回だけ処理することができる。
$schedule->command('report:generate')
->fridays()
->at('17:00')
->withoutOverlappingMultiServer();