Zend Framework выполняет медленно - PullRequest
8 голосов
/ 25 мая 2009

Я работаю на веб-сайте сообщества, используя Zend Framework - но он настолько медленный, что загрузка страниц занимает некоторое время. Я хотел бы знать, какие аспекты Zend-фреймворка мне следует рассмотреть, чтобы убедиться, что он работает намного быстрее.

Любые советы и помощь будут с благодарностью:)


Хороший совет - я взял базу данных и проиндексировал ее с нуля - не было никаких индексов для начала: \ но в любом случае скорость немного улучшилась, но все еще довольно медленная. Есть ли еще что-то, за чем я должен следить прямо здесь?

Поскольку я просто предполагаю, что это как-то связано с фреймворком, как когда я впервые запускал базовые учебные проекты, созданные с использованием фреймворка - они тоже были немного медленными.


Хорошие советы - взгляните на статью руководства по производительности Zend. Я не совсем уверен, куда поместить код для кеширования метаданных таблицы :(

Ответы [ 14 ]

20 голосов
/ 25 мая 2009

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

Я использую xdebug в сочетании с kcachegrind (часть kde для windows). Он генерирует полные трассировки вызовов для каждого исполняемого скрипта PHP, который затем можно проверить, чтобы выяснить, какие функции занимают большую часть времени. Никаких изменений кода не требуется, поэтому вы можете легко профилировать сторонние библиотеки, такие как Zend Framework.

8 голосов
/ 25 мая 2009

Если вы можете находиться в той же локальной сети, что и сервер (по крайней мере, для тестирования), то вы можете проверить свой профиль (отчасти) с клиента.

Если это один компьютер, наиболее вероятной причиной замедления являются проблемы с памятью (из-за того, что используется слишком много или слишком мало основной памяти), за которыми следуют ужасные запросы к БД.

Всегда кажется, что кэш кода операции PHP помогает, также не забудьте отключить «atime» (опция монтирования noatime в * nix, изменение реестра в Windows), чтобы избежать дорогостоящих операций записи на диск.

Достойная статья о более специфичных для Zend вещах: http://till.vox.com/library/post/zendframework-performance.html

7 голосов
/ 25 мая 2009

Установить APC на сервере. Кэши Opcode устраняют много накладных расходов, вызванных фреймворками. Как правило, вы можете сделать это, просто запустив

pecl install apc

на сервере.

6 голосов
/ 25 мая 2009

Большинство проблем с производительностью в сети - это проблемы с базой данных, всегда начинайте с базы данных, прежде чем двигаться дальше.

Может случиться так, что выполняется много вызовов базы данных, в которых вам может быть достаточно с меньшим количеством вызовов, индексы не размещены в правильных столбцах.

Это вещи, которые обычно замедляют ход событий.

6 голосов
/ 25 мая 2009

Определенно установите APC, так как он, вероятно, даст вам наибольшее увеличение производительности (2-4x) за наименьшую работу. Я также рекомендую вам взглянуть на раздел Performance справочного руководства .

Zend_Cache может использоваться со многими компонентами ZF для их ускорения, а также с вашими собственными данными.

3 голосов
/ 26 мая 2009

Взгляните сюда:

Руководство по производительности на Zend

Zend_Log , который может регистрировать и отслеживать ваше приложение

3 голосов
/ 25 мая 2009

Самым очевидным из них будет zend_cache

2 голосов
/ 23 июня 2009

Относительно кэширования метаданных Zend_Db_Table вы должны сконфигурировать кеш в начальной загрузке и добавить его в класс Zend_Db_Table_Abstract как статическое свойство.

(Подобно тому, как вы открываете адаптер базы данных по умолчанию и устанавливаете его как адаптер по умолчанию для всех Zend_Db_Table объектов.)

В разделе руководства, на которое вы ссылаетесь, приведен пример кода для настройки кэша метаданных по умолчанию. Это будет в вашей начальной загрузке.

2 голосов
/ 25 мая 2009

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

http://framework.zend.com/manual/en/performance.classloading.html

1 голос
/ 30 января 2012

Если в вашей базе данных не было индексов для начала, я уверен, что есть другие вещи, которые вы делаете совершенно неправильно!

В любом случае ... установите APC для кеширования вашего кода операции. Это значительно улучшит время выполнения. Большинство фреймворков имеют огромные накладные расходы из-за огромного количества сценариев, которые необходимо включить в ваше приложение. APC буквально решит эту проблему. FastCGI также может значительно улучшить производительность. Так могут постоянные соединения с базой данных (при условии, что FastCGI установлен и работает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...