Intereting Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

ИМХО, преимущества использования структуры намного перевешивают недостатки любых накладных расходов, которые могут возникнуть с ней. Конечно, всегда есть исключения из правила:
– Проект достаточно мал, чтобы не оправдывать рамки
– Сама рамочная схема

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

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

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

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

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

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

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

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

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

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

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