Существует множество переменных, которые могут повлиять на производительность вашего приложения. Я рекомендую вам не предполагать, что проблема в PHP.
Во-первых, как вы обслуживаете PHP? Вы пробовали базовую оптимизацию самого Apache или IIS? Сервер занят обработкой других видов запросов? Вы использовали ускоритель PHP-кода ? Один из способов проверить, является ли сервер узким местом, - попытаться запустить приложение на другом сервере.
Во-вторых, замедляется ли производительность всего приложения или это только влияет на определенные страницы? Это может дать вам представление о том, с чего начать анализ производительности. Если все приложение работает медленно, проблема, скорее всего, связана с базовым сервером / платформой или с глобальным запросом SQL, который является частью каждого запроса (например, аутентификация пользователя).
В-третьих, вы упомянули минимизацию количества запросов SQL, но как насчет оптимизации существующих запросов? Если вы используете MySQL, пользуетесь ли вы преимуществами каждой системы хранения? Запускали ли вы EXPLAIN для самых важных запросов, чтобы убедиться, что они правильно проиндексированы? Это важно для запросов, которые обращаются к большим таблицам; чем больше набор данных, тем больше вы заметите последствия плохой индексации. К счастью, есть много статей , таких как эта , которые объясняют, как использовать EXPLAIN.
В-четвертых, распространенной ошибкой является допущение, что ваш сервер базы данных будет автоматически использовать все ресурсы, доступные для системы. Вы должны убедиться, что вы явно выделили достаточно ресурсов для приложения базы данных. Например, в MySQL вы захотите добавить пользовательские настройки (в вашем файле my.cnf) для таких вещей, как буфер ключа, размер временной таблицы, параллелизм потока, размер пула буферов innodb и т. Д.
Если вы дважды проверили все вышеперечисленное и все еще не можете найти узкое место, профилировщик кода, такой как Xdebug, определенно может помочь. Лично я предпочитаю профилировщик Zend Studio, но это может быть не лучшим вариантом, если вы уже не используете преимущества остальной части стека Zend Platform. Однако, по моему опыту, очень редко сам PHP является основной причиной низкой производительности. Зачастую профилировщик кода может помочь вам с большей точностью определить, какие именно запросы БД виноваты.