Самый быстрый php фреймворк. Что такое фреймворк (framework)

Самый быстрый php фреймворк. Что такое фреймворк (framework)

Для начала скажу что я очень большой любитель что-то попатчить и потвикать, даже если для этого нету особой необходимости. И вот недавно рассматривая статистику XCache на своем сервере я подумал что смог бы оптимизировать объем памяти который он тратит на опкеш (opcache) файлов различных фреймворков. Сделать это просто - переписать все используя только один, файлы которого были бы общими для всех сайтов, каких у меня порядка 20-ти, но в большинстве они довольно простенькие и особого труда их переписать мне бы не предоставило. И тут я начал поиск того самого фреймворка, который в идеале имел бы достаточно фич чтобы разработка была простой, и в тоже время был легким и быстрым. Вот те которые мне понравились и мои мысли о них.


Интересный в первую очередь тем что написан на С и компилируется как модуль для PHP. Судя по бенчмаркам работает намного быстрее других (где-то в 3 раза быстрее среднего) и при этом соблюдая достаточно привычную MVC структуру. Так же очень порадовало то, что Phalcon использует Dependency Injection и предоставляет свой DI контейнер, но вот судя по туторилам всё равно очень часто классы используются напрямую, при этом включая статические методы, чего лично я стараюсь избегать. К слову должен сказать что модуль скомпилировался и заработал с первого раза, без танцев с бубнами, что всегда приятно. Посмотрев немного глубже я начал видеть больше недостатков, во-первых не так уж много PHP программистов которые достаточно хорошо знают С чтобы помочь в его разработке, как следствие Phalcon будет развиватся медленнее его PHP собратьев. Во-вторых, в нем придумано много своих костылей, как например PHQL (Phalcon Query Language) на замену SQL и т.д. В итоге имеем достаточно смелый проект с неизвестным будущем.

О нем я услышал совсем недавно, его упомянул в своем твите Phil Sturgeon (разработчик PyroCMS и член PHP-FIG) и я сначала подумал что это попросту шутка. Серьёзно, я считаю что ни один PHP программист не сможет прослушать интро на главной странице до конца при этом не рассмеявшись. Философия PHPixie в том что фреймворк должен быть быстрым и легким как маленькая фея , этого разработчики пытаются достичь подходом известным питонистам как «Simple things should be simple, hard things should be possible». То есть компоненты PHPixie написаны так чтобы самым простым и быстрым способом справится с 90% рутинных задач при разработке сайтов, а оставшиеся 10% сложных более редких задач предполагается разработчик решит сам и незачем их включать в сам фреймворк. Должен сказать что в ни одном из моих сайтов не использовалось ничего такого чего не было бы в PHPixie, и даже Dependency Injection у них довольно хорош, хотя и склоняется в сторону Service Locator. В отличии от других реализаций DI контейнеров новые элементы добавляются в него посредством расширения класса, что менее гибко, но намного более прозрачно, при этом позволяет полностью избежать процедурного кода и получить распознавание класса элементов контейнера в IDE. Из минусов могу только отметить то, что воспринимать его серьёзно достаточно трудно, и вряд ли вы сможете убедить ваших сотрудников в офисе писать что-либо на фреймворке с феями и пони.
Fat-Free

Весь фреймворк одним файлом! Огромный плюс сразу на лицо: один файл с диска подгрузится быстрее чем множество, причём размер этого файла примерно 50 килобайт. Правда как оказалось в этом одном файле далеко не весь фреймворк, а только самая основная его часть, то есть если вам например понадобится доступ к базе данных то классы все равно придётся подргружать.Тем более тот же XCache и так кеширует PHP код, в таком случае выигрыш от такого подхода если и будет то очень небольшой. Вместе с фреймворком поставляется просто куча библиотек, что удобно если не использовать Composer и совсем не нужно если использовать. Также очень удивило то, что их ORM не поддерживает связей между таблицами, без каких его можно сразу выбросить в окно, так как это очень сильно сужает область его использования. Это фактически единственный из рассмотренных мною фреймворков, который меня действительно в себе разочаровал.
Silex ,Slim и микрофреймворки.

Об этих двух известно и так достаточно много. Так как они оба не предоставляют полный стек для разработки тут все будет зависеть от того какие библиотеки вы к ним прикрутите и как это сделаете. Из этого исходит гибкость микрофреймворков, но с другой стороны труднее будет найти коммюнити и суппорт, так как у каждого программиста в итоге своя система. К тому же если фреймворк пишется весь одними людьми его намного проще освоить, так как философия кода похожа. А вот если у вас франкенштейн собранный из разных библиотек, в которых разный стиль и подход, то разобраться в этом будет сложнее. В конечном итоге попытки сделать из Silex полноценный фреймворк e у меня приводят к собранию некого подобия Symfony. Тут следует отметить что написания кода на Slim и Silex происходит интуитивно, быстро и безо всяких магий.

Тут немного больше инноваций, например единое API для SQL и NoSQL баз данных, а также по словам разработчиков децентрализованная система фильтров. Фреймворк создан бывшим разработчиком CakePHP, и местами это очень даже заметно, как например при использовании моделей. Фильтры позволяют фактически перехватить вызов метода класса и на лету поменять его параметры и результат. Гибко, но в итоге можно получить макаронный код, наподобие того как работают плагины в Wordpress. Так же удивительно что столь инновационный фреймворк так упорно использует статические методы. Радует простая архитектура, то есть если создавать простенький сайт то количество кода который придестя написать не намного отличается от использования Silex. В принципе очень хорошо подходит для тех кто работал с CakePHP в прошлом, но хочет попробовать что-то новое.

Так какой же я выбрал в итоге? В конце мой выбор стоял между Silex и PHPixie (да, я не устрашился фей) и в результате я все таки использовал их обеих. Большинство сайтов перевёл на Silex, а те которые писались на Kohana портировал на PHPixie, интерфейс которой чем-то к ней похож, особенно реализация ORM. Этим я смог уменьшить примерно в 6 раз количество памяти потребляемое XCache, ускорить генерацию страниц и даже успел немного порефакторить по дороге. В общем PHP - страна тысячи фреймоврков, так что думаю каждый сможет найти что-то по душе.

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

Давайте рассмотрим 9 лучших фреймворков с помощью которых вы сможете создавать удивительные адаптивные сайты.

1. Symfony 2

Этот фреймворк определенно не для новичков. Со всеми его многочисленными функциями моделей, объектов, маршрутов, контроллеров он может показаться сложным. Но если у вас есть солидный объем знаний по PHP и HTML , можно создавать с его помощью невероятные веб-приложения.

Symfony — это открытый проект, размещенный на GitHub , и более 300 000 программистов работали и улучшали свой код с его помощью.

Symfony 2 состоит из набора многоразовых PHP-компонентов , которые легко устанавливаются на большинство платформ. И, как известно, он очень стабилен и гибок.

2. Phalcon

Это фреймворк, написанный на C , самая быстрая PHP-платформа. Он предлагает большое количество новейших функций, таких как маршрутизация, просмотр шаблонов, кеширование и ORM , контроллеры, язык запросов и т. д.

Phalcon всегда на шаг впереди конкурентов благодаря низким системным требованиям, которые позволяют использовать намного меньше ресурсов. А также за счет внедрения зависимостей, наборам помощников PHP , PSR-4 автозагрузчику и продвинутым функциям маршрутизации. Он подходит неопытных пользователей, так как на его изучение не уходит много времени. Вот какой фреймворк нужно выбрать в PHP .

3. Laravel

Laravel — самый популярный фреймворк 2016 года. Это также и самый простой для изучения фреймворк. Самой мощной его функцией является собственный механизм шаблонов, называемый «Blade », который не потребляет дополнительных ресурсов на вашем сайте.

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

4. Yii

Еще один простой в использовании фреймворк с открытым исходным кодом. Процесс разработки будет проходить гладко и эффективно благодаря использованию PHP5 . Фреймворк включает в себя все необходимые для профессиональных сайтов функции, а также CMS и CRM . Это две отправные точки, которые представляют собой основу любого надежного скрипта.

Когда речь заходит об обеспечении безопасности, Yii работает просто удивительно . Gii , доступный в рамках Yii , это мощный генератор кода. Благодаря ему вы можете легко создавать формы, модули, CRUD , модели и т. д.

5. CodeIgniter

Надежный полнофункциональный инструмент для создания веб-приложений. Он занимает всего 2 МБ места на диске, а руководство для пользователей подробно описывает компоненты, благодаря которым можно легко обойти сложный MVC .

CodeIgniter предоставляет инструмент подстановки с шаблонами и плагинами.

6. Cake

Наш рейтинг фреймворков PHP продолжает современная среда, которая также поддерживает 9 языков, хотя она была выпущена еще в 2005 году. CakePHP 3.3 позиционируется, как мощный фреймворк.

С его помощью даже начинающие программисты смогут создать визуально привлекательные сайты. Фреймворк шаблон MVC , который представляет собой модельную поддержку для более эффективного управления данным. А также функции ORM и множество компонентов, плагинов и помощников.

CakePHP больше всего подходит для коммерческих сайтов и не требует конфигурирования, так как не содержит сложных файлов YAML или XML .

7. ZendPHP

Данный фреймворк был выпущен 9 лет назад, и до сих пор не теряет актуальности. Это объектно-ориентированный фреймворк, поэтому лучше всего использовать его для наследования или интерфейсов. Его последняя версия оптимизирована под PHP7 , но также прекрасно поддерживается и PHP 5.5 .

Zend заменил стек MVC более простой альтернативой, построенной на шаблонах промежуточного программного обеспечения, таких как Apigility .

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

8. FuelPHP

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

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

9. Slim

Гибкий PHP-фреймворк , который можно отнести к категории микрофреймворков. Он поставляется с оптимизированным маршрутизатором, функцией рендеринга шаблонов с пользовательскими представлениями, безопасными куками, функциями мгновенных сообщений, кеширования HTTP , обработки ошибок.

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

Перевод статьи «9 Best PHP Frameworks to Build Awesome Responsive Websites » дружной командой проекта .

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

Для этого нужно учесть достаточно большое количество характеристик, от «как быстро всё будет работать» до «а необходима ли нам эта фича?». И так каждый раз. Именно в моменты мозгового штурма команда сравнивает удобство фреймворка, скорость, набор фич, которые реализованы в нем или в совместимых с ним модулях.

Но какой же всё-таки лучше, быстрее и производительнее?

Разработчики постоянно проводят сравнение фреймворков, чтобы прояснить для себя этот вопрос. Например, в статье Lukasz Kujawa приведено сравнение PHP фреймворков. Одно «но» - статья за 2013 год. А ведь время идёт… Поэтому мы решили провести своё, актуальное сравнение фреймворков.

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


Одной из основных целей данной статьи также является попытка практическим путем определить улучшения в производительности и эффективности новых версий PHP. Поэтому тестирование было проведено на РНР 5.6/7.0/7.1

Что будем сравнивать?

Для сравнения были выбраны следующие фреймворки:
  • slim-3.0
  • ci-3.0
  • lumen-5.1
  • yii-2.0
  • silex-1.3
  • fuel-1.8
  • phpixie-3.2
  • zf-2.5
  • zf-3.0
  • symfony-2.7
  • symfony-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (версия 7.0.0 - для РНР5.6 и версия 7.4 для РНР7.0 и выше)
  • ze-1.0
  • phalcon-3.0
Тестирование условно разделено на 4 вида:
  • производительность (throughput),
  • занимаемая память (memory),
  • время выполнения (exec time),
  • количество подключаемых файлов (included files).

Методика тестирования и тестовый стенд

Машина, на которой производилось тестирование, обладает следующими характеристиками:

Operation system: Linux Mint 17 Cinnamon 64-bit
Cinnamin Version 2.2.16
Linux Kernel: 3.13.0-24-generic
Processor: Intel Core i3-4160 CPU 3.60 Ghz X 2
Memory: 8 GB

Server version: Apache/2.4.7 (ubuntu)
Server build: Jul 15 2016
php 7.1 / php7.0 / php5.6

Вводим команду git clone https://github.com/kenjis/php-framework-benchmark - и фрейм уже на нашей машине. Поскольку мы использовали Mint, необходимо выполнить настройку: 


# Added
net.netfilter.nf_conntrack_max = 100000
net.nf_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10

Sudo sysctl -p

Немного о структуре самого php-framework-benchmark:

/benchmarks - содержит bash-скрипты, отвечающие за сбор информации о количестве запросов в секунду (при помощи утилиты ab), количестве информации, сколько времени было потрачено и сколько файлов вызывалось из файла «точки старта».

/lib - директория, в которой находятся файлы, отвечающие за обработку полученной информации после вывода страницы “Hello world”, вывод таблиц с результатами и построение диаграмм.

/output - директория, в которую добавляются логи после выполнения тестирования. Здесь находится по два файла для каждого протестированного файла: .ab.log - лог после работы утилиты ab, и.output - содержит информацию, которая была выведена на экран (обычно это hello world и данные по памяти, времени выполнения, использовавшимся файлам).

Остальные папки - это заготовки фреймов, в которые уже добавлен один контроллер, который вернет строку “hello world” при обращении по URI, составленному по правилам обращения к данному фреймворку.

Для запуска теста сначала нужно настроить фреймворки. Рассмотрим два подхода.

Команда bash setup.sh настроит те фремворки, которые описаны в файле list.sh. Вы можете его редактировать: добавлять и удалять папки для тестирования. То есть конфигурировать так, как вам необходимо.

Командой bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/ вы можете установить какие-то отдельные фреймворки, задав их параметрами к команде. В некоторых случаях это удобно, но мы использовали первый подход.

После произведенной настройки фреймворков, мы запустили тестирование при помощи bash benchmark.sh .

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

Для отображения графиков мы воспользовались ссылкой http://localhost/php-framework-benchmark/ .

Как вы понимаете, необходимо было произвести настройку Apache и заставить его смотреть в папку с фреймом. Всё это описано в readme, поэтому вопросов не возникает.

Результаты тестирования фреймворков

Каждый раздел имеет структуру, состоящую из двух форм представления результатов.

Первая форма - это наглядный тип представления. Каждая характеристика содержит 4 диаграммы. Каждая диаграмма отображает сравнение фреймворков между собой, плюс накопительная диаграмма. Она была построена при использовании определенной версии РНР. Таким образом можно проследить эволюцию улучшений в PHP и фреймворках.

Вторая форма - это результат тестирования в виде таблицы (хватить наглядности, давайте говорить серьезно - дайте мне больше чисел!).

Производительность (throughput)

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

Мы получили следующие результаты (запросы в секунду):

php 5.6 php 7.0 php 7.1
phalcon-3.1.2 5058.00 5130.00 7535.00
ci-3.0 2943.55 4116.31 4998.05
slim-3.0 2074.59 3143.94 3681.00
yii-2.0 1256.31 2276.37 2664.61
silex-1.3 1401.92 2263.90 2576.22
lumen-5.1 1316.46 2384.24 2741.81
ze-1.0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
fuel-1.8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2.5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
symfony-2.7 360.03 873.40 989.57
symfony-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

Для наглядности построили графики для каждой версии PHP:

PHP5.6:

PHP7.0:

PHP7.1:



Занимаемая память (peak memory)

Эта характеристика (в мегабайтах) отвечает за количество занимаемой фреймворком памяти при выполнении поставленной перед ним задачи. Чем меньше данное число, тем лучше для нас и для сервера:
php 5.6 php 7.0 php 7.1
phalcon-3.1.2 0.27 0.38 0.37
ci-3.0 0.42 0.38 0.38
slim-3.0 0.61 0.55 0.55
yii-2.0 1.31 0.91 0.91
silex-1.3 0.74 0.65 0.65
lumen-5.1 0.80 0.63 0.63
ze-1.0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
fuel-1.8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2.5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
symfony-2.7 3.11 1.41 1.42
symfony-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

* - bluz-7.3.1 не поддерживает php 5.6

PHP 5.6:

PHP 7.0:

PHP 7.1:

Сводная накопительная диаграмма (по фреймворкам):

Время выполнения

Время выполнения - время, затрачиваемое системой для выполнения поставленной задачи. Измеряется от начала выполнения задачи до выдачи результата системой.

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

Время приведено в миллисекундах (ms):

php 5.6 php 7.0 php 7.1
phalcon-3.1.2 1.300 1.470 1.080
ci-3.0 0.996 0.818 1.007
slim-3.0 1.530 1.228 0.662
yii-2.0 1.478 1.410 1.639
silex-1.3 4.657 1.625 2.681
lumen-5.1 2.121 1.829 1.228
ze-1.0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
fuel-1.8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2.5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
symfony-2.7 6.529 3.902 2.384
symfony-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Сводная накопительная диаграмма (по фреймворкам):

Подключаемые файлы

Характеристика, отвечающая за количество подключаемых файлов, которые описаны в файле «точки входа» фреймворка. Понятно, что система тратит какое-то время на поиск и подключение. Следовательно, чем меньше файлов, тем быстрее будет осуществляться первый запуск приложения, так как обычно в последующие разы фреймворк работает с кэшем, что ускоряет работу:
phalcon-3.1.2 5
ci-3.0 26
slim-3.0 53
yii-2.0 46
silex-1.3 63
lumen-5.1 37
ze-1.0 68
phpixie-3.2 163
fuel-1.8 53
bluz-7.3.1 95
zf-2.5 222
zf-3.0 188
symfony-2.7 110
symfony-3.0 192
laravel-5.3 38
laravel-5.4 176


Разница в количестве подключаемых файлов между Laravel 5.3 и Laravel 5.4 может показаться странной и дать повод к обсуждениям, спорам и т.п. Спешим разъяснить ситуацию. Как вы знаете, с помощью команды

Php artisan optimize --force

В Laravel 5.3 можно сгенерировать файл compiled.php, и тем самым уменьшить количество подключаемых файлов, собрав их в один. Но есть одно «но»: команды для генерации этого файла в Laravel 5.4 больше нет. Разработчик решил удалить эту фичу, так как посчитал (https://github.com/laravel/framework/pull/17003), что для настройки производительности лучше использовать opcache.

Стоит ли обновляться?

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

При переходе с PHP 5.6 на PHP 7.0 средний прирост производительности составил почти +90%, при этом минимальный прирост производительности составил +33% для Laravel 5.3, а максимум - >200% для Zend Framework 2.5.

Переход с версии 7.0 на 7.1 уже не так шокирует, но всё же в среднем даёт почти 20% прирост производительности.

Сведя все полученные данные по производительности различных версий PHP, получим вот такие «матрасы»:


Забавный факт : Laravel 5.3 показал наименьший прирост производительности при миграции с PHP 5.6 на PHP 7.0, но при этом наибольший прирост при миграции с версии 7.0 на версию 7.1, и как итог - производительность Laravel 5.3 и 5.4 на PHP 7.1 практически одинакова.

Потребление памяти тоже оптимизировали, так что переход с PHP 5.6 на PHP 7.0 позволит вашему приложению потреблять на 30% меньшем памяти.

Обновление с версии 7.0 до версии 7.1 практически не даёт прироста, а в последних Symfony и Laravel так и вовсе уходим в «минус», потому что они начинают чуть больше «кушать».


Осталось ещё посмотреть на время выполнения, и да, тут тоже всё отлично:

  • переезд с PHP 5.6 на PHP 7.0 подарит вам ускорение в среднем на 44%.
  • переезд с PHP 7.0 на PHP 7.1 подарит вам ускорение ещё на 14%.

Примечание. Тестирование при помощи ab - с чем мы столкнулись


«А что со slim и phpixie» - этот вопрос подтолкнул на расследование поведения утилиты ab при взаимодействии с этими фреймворками.

Выполним тест отдельно для Slim-3.0:

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Concurrency Level: 10
Time taken for tests: 5.005 seconds
Complete requests: 2
Failed requests: 0
Total transferred: 1800 bytes
HTML transferred: 330 bytes
Requests per second: 0.40 [#/sec] (mean)
Time per request: 25024.485 (mean)
Time per request: 2502.448 (mean, across all concurrent requests)
Transfer rate: 0.35 received

Что-то не так - количество запросов в секунду всего 0.4 (!)

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

Concurrency Level: 10
Time taken for tests: 3.004 seconds
Complete requests: 1961
Failed requests: 0
Total transferred: 1995682 bytes
HTML transferred: 66708 bytes
Requests per second: 652.86 [#/sec] (mean)
Time per request: 15.317 (mean)
Time per request: 1.532 (mean, across all concurrent requests)
Transfer rate: 648.83 received

Дело было в Keep Alive соединении, подробнее можно узнать тут.

“When you make requests with «Connection: keep-alive» the subsequent request to the server will use the same TCP connection. This is called HTTP persistent connection. This helps in reduction CPU load on server side and improves latency/response time.

If a request is made with «Connection: close» this indicates that once the request has been made the server needs to close the connection. And so for each request a new TCP connection will be established.

By default HTTP 1.1 client/server uses keep-alive where as HTTP 1.0 client/server don’t support keep-alive by default.”


Таким образом, тест для Slim должен выглядеть так:

Ab -H "Connection: close" -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Concurrency Level: 10
Time taken for tests: 3.000 seconds
Complete requests: 10709
Failed requests: 0
Total transferred: 2131091 bytes
HTML transferred: 353397 bytes
Requests per second: 3569.53 [#/sec] (mean)
Time per request: 2.801 (mean)
Time per request: 0.280 (mean, across all concurrent requests)
Transfer rate: 693.69 received

Заключение

Как и стоило ожидать безоговорочным лидером по производительности (но не скорости разработки) является Phalcon. Второе место, - а на самом деле первое среди PHP-фреймворков (а не C, на котором написан исходный код Phalcon) - занимает CodeIgniter 3!

Конечно же, не стоит забывать, что каждому инструменту своё предназначение. Если вы выбираете небольшой и легкий фреймворк и собираетесь написать на нём что-то отличное от простейших приложений или REST API, то, скорее всего, вы столкнётесь с проблемами при расширении функционала. И наоборот - избыточность полнофункциональных, больших фреймворков повлечёт за собой финансовые издержки на содержание хостинга даже для элементарных приложений под большой нагрузкой.

Это тестирование проводилось для того, чтобы убедить/рассказать/укрепить позицию языка РНР версий 7.0 и 7.1 в вашем сознании и в будущих проектах, донести информацию о том, что производительность действительно возросла.

Рефакторинг внутренних структур данных и добавление дополнительного этапа перед компиляцией кода в виде абстрактного синтаксического дерева - Abstract Syntax Tree (AST), - привели к превосходной производительности и более эффективному распределению памяти. Результаты сами по себе выглядят многообещающе: тесты, выполненные на реальных приложениях, показывают, что PHP 7 в среднем вдвое быстрее PHP 5.6, а также использует на 50% меньше памяти во время обработки запросов, что делает PHP 7 сильным соперником для компилятора HHVM JIT от Facebook.

Тесты полностью подтверждают и вдвое ускорившуюся обработку запроса в РНР7, и уменьшенное количество используемой памяти.

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

Фреймво́рк (англицизм неологизм от англ. framework букв. – каркас, структура) - программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. Употребляется также слово «каркас».

Здесь записано общее определение, ведь бывает веб-программирование, а бывает прикладное. Соответственно, свои фреймворки есть и там, и тут. Но я на своем блоге говорю только о веб-программировании, поэтому о нем мы и поговорим.

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

Фреймворки в веб-разработке

Фреймворк привязан к языкам, на которых он написан, поэтому и говорят, например: js-фреймворк, php-framework и т.д. Как правило, его создает один или несколько опытных разработчиков для того, чтобы в будущем использовать для своих целей. Некоторые фреймворки выкладывают в свободный доступ и их использование и кастомизация становятся доступными абсолютно для всех.

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

  • табы-переключатели;
  • модальные окна, оповещения;
  • адаптивная резиновая сетка;
  • кнопки, формы, таблицы и т.д.;

То есть при использовании css-фреймворка вам нет нужды писать код с нуля, очень многое уже реализовано, остается только применить нужные стилевые классы к элементам и все будет работать. Заметьте, что Bootstrap это не только css, но и js-framework. Подробнее о Bootstrap вы можете почитать .

Пример php-фреймворка — известный в рунете Yii. Опять же, он существенно облегчает разработку сайта по сравнению с тем, если все делать на голом php. В фреймворках уже есть ряд готовых решений, поэтому вам, по сути, остается лишь изучить работу с ними.

У каждого фреймворка есть своя цель. Например, Bootstrap идеально подходит для разработки адаптивных шаблонов, сайтов с поддержкой на мобильных устройствах, с помощью Yii можно легко реализовать функционал блога или интернет-магазина, Angular идеально подходит для разработки фронтенда у веб-приложений.

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

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



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows