Метод Laravel onOneServer() для разрыва планировщика задач с кешем php artisan: очиститьPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Метод Laravel onOneServer() для разрыва планировщика задач с кешем php artisan: очистить

Сообщение Anonymous »

Мое приложение Laravel работает за балансировщиком нагрузки, и одновременно работают 2 экземпляра EC2. Раньше я управлял cronjob только на одном сервере, но это не идеальный способ, потому что если нагрузка увеличится или произойдет какая-то необычная ошибка, и если инициализируется третий экземпляр EC2, то cronjob запустится и на этом сервере, и мой cronjob выполняет критическую задачу, такую ​​​​как зарядка полосы или срок действия подписки, и если оба сервера выполняют задачу cronjob, то пользователь будет взимать плату за полосу несколько раз.
Поэтому, чтобы решить эту ситуацию, я реализовал распределенную блокировку с помощью Redis. Я изменил драйвер кэша по умолчанию с файла на redis в файле .env. CACHE_DRIVER=redis и в Console/Kernel.php добавлен такой метод onOneServer.

Код: Выделить всё

$schedule->command('subscription:autorenew')->everyMinute()->withoutOverlapping()->onOneServer();
теперь, даже если на обоих серверах включен crontab, он выполняет задачу только на одном сервере, но в моем конвейере развертывания есть команда php artisancache:clear из-за этого блокировка снимается, даже если задача выполняется, и второй сервер также начинает выполнять ту же задачу одновременно.
Есть ли какой-либо встроенный способ Laravel, где я могу установить свой CACHE_DRIVER=file по умолчанию и при этом использовать Redis для распределенной блокировки, чтобы php artisancache:clear не влияет на блокировку кэша Redis?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -cacheclea
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»