Улучшение производительности PHP API

1

Я новичок в разработке API, и я только начал создавать POC моего проекта в соответствии с требованиями моего проекта
1. Я получаю запрос от пользователя на основе этого Запроса.
2. Я должен просить нескольких других провайдеров, используя API, предоставленный ими (по крайней мере, 8-10) для каждого запроса, который я получу от пользователя.
3. Получите некоторую информацию из моей базы данных.
4. Преобразуйте весь ответ другого сервера и информацию, которую я извлекаю из My DB в JSON, и верните ее пользователю, который его запросил.

Я написал этот код в основном PHP, но производительность не доходит до отметки, которую он занимает около 2,5 секунд, отвечая на вопрос пользователя, который очень медленный. На каком языке будет лучше создавать такой API, если я должен выбрать любой другой язык или придерживаться только PHP, но используя определенные рамки и методы, которым я должен следовать, что может помочь мне улучшить производительность моего API?

  • 0
    Если у вас есть проблемы с вашим кодом, вы должны создать минимальный, полный и проверяемый пример, чтобы мы могли помочь вам с вашей проблемой.
  • 0
    Как вы делаете другие запросы. Php обычно не асинхронный, это означает, что вам придется ждать каждого запроса, чтобы вернуться, прежде чем делать следующий. Есть способы обойти это, используя выбор потока, proc_open и т. Д. Или фреймворки, такие как React PHP.
Показать ещё 2 комментария
Теги:
performance

2 ответа

5

Я бы рекомендовал использовать три подхода к производительности: измерить, измерить и измерить.

Там вы можете улучшить работу с небольшой работой в этом стеке; его несколько простой, логичный и не имеет слишком много движущихся частей.

Начните с измерения таких вещей, как время выполнения SQL-запросов, сколько времени требуется вашему приложению для форматирования ответа JSON и сколько времени от начала до завершения приложения требуется, чтобы вернуть ответ. Вы можете сделать это с помощью простого PSR-совместимого регистрационного пакета, такого как монолог.

Знание этих измерений поможет вам ответить на такие вопросы, как:

  • мое приложение медленное или это хостинг?
  • моя база данных медленная; следует ли мне посмотреть на индексы столбцов?
  • моя сеть медленная; следует ли разместить приложение ближе к моим клиентам?
  • мой маршрутизатор приложений медленный; я должен кэшировать маршрутизатор (если его использование \Reflection классов это может быть особенно плохо при производительности)

Вы можете получить более подробную информацию о времени и журнале в файле, просмотрев профилирование приложений. Там особенно хорошая публикация SO, в которой описывается, как подойти к этому.

TL;DR; не просто изучайте новый язык/стек, потому что он может быть быстрее. Если вы действительно хотите, чтобы я смотрел на такой язык, как Go (его можно было легко перенести с фона PHP). Но делайте это только в том случае, если это правильное решение для вашей заявки и бизнеса; внедрение новых технологий означает, что вам нужно будет поддерживать его через несколько месяцев.

0

Если это происходит медленно, это, вероятно, связано с добавленным временем отклика ваших служб предоставления информации. Поэтому использование другого языка, вероятно, малопригодно. Рассмотрите возможность сохранения/кэширования ответа, так что сетевое обратное соединение не принимается каждый раз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню