Накладные расходы 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. Также просто убедитесь, что вы продолжаете реорганизовывать свой код с течением времени, это даст вам возможность вносить изменения, ускоряющие ваше приложение.