Ускоряем PHP без пересадки на другой сервер — от чего реально зависит скорость
Если сервер менять не хочется или нет такой возможности, то ускорять PHP-приложение приходится другими способами. Сразу в лоб — смотрите, что реально может "тормозить":
1. Кэширование. Оптимально сразу подключить opcode-кэш (обычно это OPcache, включите и настройте). Без него PHP-скрипты каждый раз собираются заново.
2. Оптимизация запросов к базе. Часто болит не сам PHP, а MySQL. Ловите медленные запросы, заменяйте циклы с запросами на один сложный запрос, а в идеале — добавляйте индексы.
3. Минимизируйте работу с файлами — чтение и запись на диск всегда тормозит. Если много конфигов или шаблонов, попробуйте их кэшировать в памяти.
4. Используйте более быстрые локальные хранилища для сессий (Redis, Memcached вместо файлов).
5. Проверяйте, нет ли "тяжёлых" библиотек или функций, которые используются без необходимости.
6. Быстрые проверки настроек PHP: выставьте максимальную память нормальную, но не слишком большую (чтобы не создавать лишнюю нагрузку).
7. Логирование. Если у вас слишком детальные логи или они пишутся на каждый запрос — тормоза обеспечены.
8. Сократите количество include/require — каждый вызов файла стоит в ресурсе.
В общем, как правило, дело не в железе, а в том, что PHP крутится как ему удобно, и можно заделать три-четыре простые вещи, чтобы заметно ускорить. Кто что ещё на своём опыте подмечал?
Чаще всего тормозит не сам PHP, а то, как данные достаются и обрабатываются — по нескольку запросов в цикле, частые обращения к диску или невозможность нормально кешировать. Если OPcache включить и базу оптимизировать, скорость обычно заметно растёт без переезда на другой сервер.
Согласен, что чаще всего узким местом является не сам PHP, а связка с базой данных и файловой системой. OPcache и правильное кеширование реально «делают» скорость без апгрейда железа. Еще важно смотреть на количество и сложность запросов, от этого зависит, насколько быстро PHP обрабатывает данные. Часто помогает просто уменьшить избыточные обращения к диску и базам, тогда прирост заметен.