Использование Zend Framework для высоконагруженных проектов - PullRequest
9 голосов
/ 23 сентября 2010

Zend Framework - хороший фреймворк, но не очень быстрый. Можете ли вы сказать, стоит ли использовать Zend Framework для высоконагруженных проектов, например, для службы маркетинга электронной почты, которая может включать около десяти или преследованной тысячи пользователей? Можно ли достичь приемлемой производительности с помощью Zend Framework? Есть ли у кого-нибудь такой опыт? Большое спасибо.

Ответы [ 6 ]

13 голосов
/ 25 сентября 2010

Насколько я знаю, окончательная защита производительности Zend Framework и рекомендации по оптимизации производительности получены Падраиком Брейди по адресу:

Тесты PHP Framework: занимательно, но в конечном итоге бесполезно

В частности, обратите внимание на его четыре рекомендации по оптимизации производительности:

  1. Не используйте Zend_Application. Хотя Zend_App отлично подходит для создания согласованных сложных начальных загрузок в рамках стандартизированной структуры, он не обходится без существенного снижения производительности по сравнению с базовой производительностью. Более прямой загрузчик (типичный для ZF до появления Zend_App) намного быстрее и также может быть выполнен без файлов конфигурации.

  2. Пропустить, используя плагин ViewRenderer. Без ViewRenderer вам нужно вручную настроить Zend_View и добавить вызовы render () для контроллеров. Это на самом деле очень просто сделать и довольно быстро - быстрое никогда не было частью генетики ViewRenderer.

  3. Использовать автозагрузку. Убрать вызовы require_once из библиотеки фреймворка, чтобы ненужные файлы игнорировались. Замените использование Zend_Loader_Autoloader не слишком сумасшедшей функцией автозагрузчика. На самом деле, молитесь, Zend_Loader никогда не используется - он выполняет множество операций с файлами, которые на сегодняшний день никогда не объяснялись мне как имеющие какое-либо значение.

  4. Предварительная загрузка всего (предварительный просмотр Symfony 2 делает!). Он покупает вам некоторые файлы cookie производительности и выравнивает базовую скорость. Использовать простой сценарий предварительной загрузки не так уж сложно.

7 голосов
/ 25 сентября 2010

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

Некоторые предложения:

  • использовать Zend_Queue для помощи с пакетной рассылкой
  • использовать Zend_Cache при любой возможности
  • Использовать кеш загрузчика плагинов
  • Уберите вызовы require_once в пользу автозагрузки
  • Избавьтесь от ненужных компонентов.(как и предполагалось, вам не понадобится стек MVC для CLI / mail)
  • Мы выбрали Sphinx в пользу Zend_Search_Lucene (огромный прирост производительности)

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

4 голосов
/ 23 сентября 2010

Вы спрашиваете:

Можно ли достичь приемлемой производительности с помощью Zend Framework?Есть ли у кого-нибудь такой опыт?

Да, у меня есть опыт работы с сайтом с миллионами пользователей.Но вам нужно использовать методы, чтобы справиться с высокой нагрузкой.Кэширование и т.д ...

CDN может очень помочь.Посмотрите на разработку с облаком.Амазонка может быть трудной для начала, но в случае необходимости она помогает вам масштабироваться.

Полагаю, я говорю о том, что Framework может стоить вам немного производительности, но помогает в обслуживании и созданииэто быстрее (как только вы преодолеете кривую обучения).Затем вы должны оценить, что необходимо сделать для повышения производительности (хотя это очень помогает планировать возможные проблемы с самого начала).

2 голосов
/ 25 сентября 2010

Ответ Джо. Я также видел ZF, развернутый на нескольких сайтах, обрабатывающих миллионы запросов, и до сих пор не столкнулся с проблемой. При работе с таким количеством трафика рекомендуется использовать другие стратегии, выходящие за рамки вашей структуры, включая, помимо прочего, кэширование и использование CDN.

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

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

2 голосов
/ 24 сентября 2010

Я знаю несколько компаний, которые используют ZF в сценариях с высокой производительностью и высокой нагрузкой. Я не знаю, какие из них я могу заявить, а какие нет, но некоторые из них - это медиа-компании, которые занимаются популярными телешоу. Другие занимаются живыми спортивными событиями. Другие - это компании с многомиллиардным оборотом, которым необходимо обслуживать свои внутренние организации. Таким образом, ZF используется многими компаниями, которые работают с сайтами с высокой нагрузкой. Одним из наших примеров является Fox Interactive (http://framework.zend.com/about/casestudies)), и я знаю нескольких других клиентов, которые используют его для высокопроизводительных веб-сайтов.

Zend Framework MVC, из коробки, будет довольно быстрым. Мой блог возвращается примерно через 100 мс без кеширования, и на моей главной странице происходит довольно много вещей. Вероятно, я мог бы уменьшить это до 50 мс с некоторым внутренним кэшированием (полное кэширование страницы могло бы уменьшить его до одной цифры мс, но тогда это не касается ZF).

0 голосов
/ 23 сентября 2010

Многие фреймворки, в действительности любые фреймворки, используются для построения и управления разработкой проекта, но в результате проект «просто» php, html, css и т. Д., Как и любой другой веб-сайт php. Итак, какие у вас есть доказательства, это реальный выбор времени для других сайтов, основанных на фреймворке и не-фреймворке, а не случайное свидетельство того, что сайт проекта Zend работает медленно.

Редактировать - ответы ниже - Я не думаю, что структура, которую использует фреймворк, снизит производительность. Это может быть больше вопрос о приемлемости PHP, а затем о том, сколько «накладных расходов» добавляется с дизайном сайта и оптимизацией загрузки, скажем JavaScript и т.д. правильный порядок и уверенность в том, что код PHP эффективен, помогут. Вы также можете использовать другие стандартные функции, такие как DB Caching и Zend Accelerator. Одной вещью, которой следует быть осторожным, было бы соединение с БД. Использование слоя ORM может оказать влияние.

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

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