Накладные расходы PHP Framework

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

Две из самых популярных фреймворков, о которых я знаю, - это CodeIgniter и CakePHP. Из того, что я понимаю, CakePHP - ужасный ресурс. Как насчет CodeIgniter? Я слышал, что Zend Framework не так уж и тонкая.

Есть ли другие (более совершенные) рамки, которые мне интересны? Было бы лучше просто не использовать рамки вообще? Какие соображения я должен сделать для выбора структуры PHP?

Ответы

Ответ 1

Используя фреймворк или не используя фреймворк, вы делаете выбор между

  • Производительность приложения по умолчанию при загрузке

  • Скорость/Стабильность развития

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

Что вы покупаете, вам нужна скорость в время разработки. Вам не нужно записывать длинные сложные SQL-запросы или отлаживать еще какие-то сложные сложные SQL-запросы. Вам просто нужно создать таблицу и создать экземпляр модели. Вам не нужно решать, где вы собираетесь скрывать свои SQL-параметры, потому что среда определяет, где это происходит. Вам не нужно вступать в огромные политические бои, где идет логика бизнес-логики и логики представления, потому что это определяет рамки. Рамки устраняют необходимость наличия разработчика системы в вашей команде или убирают вас от необходимости думать/тратить время на разработку системы. Вы можете быстрее кодировать ваше приложение и получать измеримые, видимые результаты раньше.

Вот еще один способ подумать об этом. PHP Frameworks медленнее PHP, но сам PHP медленнее C. Почему бы не написать ваше приложение непосредственно в C?

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

Наконец, последнее, что нужно рассмотреть из этого разговора. Расмус сказал, что в большинстве случаев воспринимаемая производительность вашего приложения находится в интерфейсе. И код Javascript, и как браузер кэширует запросы, которые он возвращает на ваш сервер. PHP - ужасный, ужасный язык, который редко является узким местом. Когда это шея бутылки, вы можете сделать несколько настроек (выбрать кеш-код, сфокусированный рефакторинг), который устранит узкое место производительности.

Ответ 2

вы можете посмотреть в категорию облегченных фреймворков. там без жира, doophp, limonade и т.д., они легкие, но не менее мощные, чем вы думаете. не полагайтесь на опубликованные контрольные показатели. вместо этого сравнивайте свои собственные цели.

Ответ 3

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

Но для большинства случаев вам не стоит беспокоиться об этом. Я использую Symfony (версии 1.2 и 1.4) по ряду проектов и не раз думал, что "это слишком ресурсоемкий". Я с радостью пожертвую некоторыми ресурсами в обмен на все инструменты, которые предоставляет инфраструктура, что облегчает мою жизнь, а работа займет меньше времени;)

Ответ 4

Я создал несколько больших приложений с Yii PHP framework. Это довольно быстро, потому что это "ленивые" классы автозагрузки. У меня нет жалоб на производительность.

Если вы запустите кеш-ускоритель/ускоритель PHP, например APC или eAccelerator и выполните все обычные лучшие практики для скорости загрузки страницы в настройках LAMP, то использование фреймворка PHP будет WELL WORTH IT для сохраненного времени разработки. Производительность не будет проблемой, если вы не выполняете астрономическое количество запросов!

Ответ 5

Я использовал CakePhp только в течение нескольких лет. Да, он большой и может показаться раздутым, но, если честно, я думаю, что если бы я использовал какие-либо другие рамки, к тому времени, когда я добавил все, что у меня есть, и использовать его с Cake, он будет таким же большим.

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

http://www.grasset.es - это сайт, который я построил около 4 лет назад с помощью Cake. Он большой и сложный, но я не думаю, что он медленный.

Ответ 6

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

Если вы действительно беспокоитесь о масштабе, взгляните на использование решения NOSQL, такого как MongoDB или CouchDB, с самого начала. (Я использую MongoDB, и для большинства приложений mongo может заменить MYSQL). Помимо внешнего интерфейса, часто вызовы базы данных часто замедляют работу.

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

Почти все веб-сайты большого масштаба используют кеширование. Кэширование базы данных и кэширование HTML. Вы можете посмотреть MEMCACHED, который почти каждый, кто использует и хранит ваш кеш в памяти. У MongoDB также есть сообщенные memcached как скорость при вызове данных.

Как и все остальные, здесь говорится не о каркасе, который не масштабируется. Это вся ваша архитектура. Я не смотрел на другие облегченные рамки, но если вы выбираете между CakePHP и CodeIgniter, я бы лично пошел с CodeIgniter. Также просто убедитесь, что вы продолжаете реорганизовывать свой код с течением времени, это даст вам возможность вносить изменения, ускоряющие ваше приложение.