@AlpineMilk

Как ускорить работу с API?

Есть сайт на котором люди могут выполнять тесты. Тест из себя представляет большое количество вопросов на которые пользователь отвечает да или нет, после нажатия на кнопку ответить сервер отправляет данные по API для записи в базу и редиректит пользователя на новую страницу с новым вопросом (каждый вопрос это отдельная страница с формой). Когда тест выполняют несколько человек сразу то сайт работает медленно и пользователь долго ждёт пока, появится новый вопрос.

Проект написан на Symfony 4.

Как можно ускорить процесс обработки данных?

На данный момент у меня есть такие мысли:

Изменить отправку формы на Ajax, и подставлять каждый новый вопрос в отдельно отведенный блок.
Сделать отправку данных асинхронно например через библиотеку Guzzle (не до конца понимаю как это должно работать, так как не было ещё опыта).
Нельзя загрузить все за один раз так как вопросов около 400.

Если что-то не понятно, просьба отписать в комментариях я дополню ответ.
  • Вопрос задан
  • 398 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dimuska139
Backend developer
я бы действовал так:
  1. Узнать, какие именно запросы идут в базу данных во время формирования страницы с новым вопросом
  2. Через explain analyze посмотреть, какие индексы в базе данных используются в этих запросах. Если их нет - сделать их.
  3. Возможно, страницы вопросов есть смысл кешировать - тогда они будут отдаваться моментально
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Включите slow query log в MySQL - тогда мы увидим если проблема в базе данных.
Ответ написан
Комментировать
@NinjaNickName
Web разработчик
Используйте профилирование, чтобы узнать что именно тормозит выполнение, для этого есть xhprof и его форки.

Профилирование PHP с XHprof
Профилирование PHP7 кода с использованием xhprof

Есть еще tideway, но он платный (первый месяц бесплатно).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы