Вступить в клуб →
лёгкаявопросКэш, очереди и фоновые задачи

Четырёхминутная выгрузка отчёта отдаёт 504

Кнопка «Выгрузить отчёт» строит файл по 300 тысячам заказов прямо в контроллере. Формирование занимает около четырёх минут, nginx отдаёт пользователю 504, а php-fpm всё это время держит воркера.

Как решают такую задачу?

  • Поднять proxy_read_timeout в nginx и max_execution_time в PHP до десяти минут, чтобы запрос успевал завершиться
  • Поставить построение отчёта в очередь и сразу вернуть идентификатор задания, а готовый файл отдавать по готовности
  • Разбить выгрузку на десять последовательных AJAX-запросов из браузера по 30 тысяч строк и склеить файл на клиенте
  • Класть результат в Redis, чтобы повторная выгрузка строилась быстрее и укладывалась в таймаут веб-сервера

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела