Использование Zend Framework для проектов с высокой нагрузкой

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

Solutions Collecting From Web of "Использование Zend Framework для проектов с высокой нагрузкой"

Для того, что я видел, окончательная защита производительности Zend Framework и рекомендаций по оптимизации производительности исходит от Padraic Brady по адресу:

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

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

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

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

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

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

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

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

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

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

Ты спрашиваешь:

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

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

CDN может многое помочь. Посмотрите на развитие с облаком. Amazon может быть болью, чтобы начать работу, но это помогает вам масштабировать, если нужно.

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

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

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

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

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

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

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

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

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