Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як увімкнути режим обслуговування на кількох серверах і що він робить з чергами?

За замовчуванням php artisan down створює файл у storage/framework - лише на тому сервері, де виконали команду. На п'яти серверах решта чотири продовжать приймати запити.

Драйвер на основі кешу:

APP_MAINTENANCE_DRIVER=cache
APP_MAINTENANCE_STORE=redis

Сховище має бути спільним для всіх серверів - тоді досить одного down.

Корисні опції:

php artisan down --secret="team-preview" --render="errors::503" --retry=60
  • --secret - команда відкриває https://example.com/team-preview і бачить сайт через cookie обходу;
  • --render - сторінку віддають до завантаження фреймворку, тож вона не впаде під час composer install;
  • --retry - заголовок Retry-After для клієнтів і пошукових ботів;
  • --redirect=/ - перенаправляти всі запити.

Черги: поки застосунок у режимі обслуговування, воркери не обробляють завдання - вони накопичуються й виконаються після up. Довге обслуговування - велика черга на виході; варто оцінити, чи витримають її воркери, і чи не застаріють завдання (листи «ваш код дійсний 10 хвилин»).

Планувальник теж не запускає завдання, окрім evenInMaintenanceMode().

Для деплою без простою режим обслуговування взагалі не потрібен - його залишають для робіт, що справді вимагають зупинки.

Докладніше в документації: Режим обслуговування на кількох серверах

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання