from numpy.random import multinomial
multinomial(40, [1/4.] * 4)
Если вы можете находиться в той же локальной сети, что и сервер (по крайней мере, для тестирования), вы можете проверить свой профиль (частично) с помощью клиента.
Если это одна машина, наиболее вероятной причиной замедления являются проблемы с памятью (что-то использует слишком много или слишком мало основной памяти), за которыми следуют ужасные запросы к базе данных.
Кажется, что всегда помогает кеш кода операции PHP, также не забудьте отключить "atime" (noatime mount вариант * nix, изменение реестра в Windows), чтобы избежать дорогостоящей записи на диск.
Достойная статья о более специфических вещах Zend: http://till.vox.com/library/post/zendframework-performance.html
Единственный способ точно узнать, где находятся ваши узкие места, - это глубокое профилирование.
Я использую xdebug в сочетании с kcachegrind (часть kde для Windows). Он генерирует полные трассировки вызовов для каждого выполняемого сценария PHP, который затем можно проверить, чтобы выяснить, какие функции занимают большую часть времени. Изменения кода не требуется, поэтому вы можете легко профилировать сторонние библиотеки, такие как Zend Framework.
Обязательно установите APC, так как это, вероятно, даст вам наибольший прирост производительности (2-4x) при минимальной работе. Я также рекомендую вам взглянуть на раздел Производительность справочного руководства .
Zend_Cache можно использовать со многими компонентами ZF для их ускорения, а также с вашими собственными данные.
Установите APC на сервере. Кеши кодов операций устраняют множество накладных расходов, вызванных фреймворками. Обычно это можно сделать, просто запустив
pecl install apc
на сервере.
Большинство проблем с производительностью в Интернете - это проблемы с базой данных, всегда начинайте смотреть со стороны базы данных, прежде чем двигаться дальше.
Может случиться так, что выполняется много обращений к базе данных, и вам может хватить меньшего числа вызовов, при этом индексы размещаются не в правильных столбцах.
Это вещи, которые обычно замедляют работу.
Вам следует ознакомиться с официальным руководством по производительности Zend.
Существует множество советов о том, как настроить скорость Zend, большинство из них касается уменьшения количества файлов, загружаемых zend при запуске.
http://framework.zend.com/manual/en/performance.classloading .html
Согласен с комментарием базы данных. Если ваш сайт работает медленно, скорее всего, это НЕ проблема инфраструктуры Zend, а скорее всего проблема с базой данных.
Взгляните здесь:
Руководство по производительности на Zend
Zend_Log , которое может регистрировать и отслеживать ваше приложение
http://www.nabble.com/Caching-of-MVC-and-other-ZF-components-td15576554s16154.html
Думаю, нам придется подождать PHP5 .3, а затем надеемся, что мы сможем использовать его в производственной коробке. :)
Что касается кэширования метаданных Zend_Db_Table
, вы должны настроить кеш в загрузочном файле и добавить его в класс Zend_Db_Table_Abstract
как статическое свойство.
(Аналогично тому, как вы открываете адаптер базы данных по умолчанию и устанавливаете его в качестве адаптера по умолчанию для всех объектов Zend_Db_Table
.)
Пример кода настройки кэша метаданных по умолчанию в раздел руководства, на который вы ссылаетесь. Это войдет в ваш бутстрап.