Phalcon. Что нового? Александр Торош

Dd3f18c87b851137000c7427d7bd5d32?s=47 fwdays
November 18, 2014

Phalcon. Что нового? Александр Торош

Dd3f18c87b851137000c7427d7bd5d32?s=128

fwdays

November 18, 2014
Tweet

Transcript

  1. 2.

    Годом ранее… PHP Frameworks Day 12 октября 2013 Phalcon -

    cамый быстрый PHP Framework. Разработка highload проекта http://frameworksdays.com/event/php-frameworks- day-2013/review/Phalcon-PHP-Framework
  2. 3.

    План доклада 1. Рост популярности Phalcon 2. Изменения в Phalcon

    версии 1.x 3. Обзор популярных разработок 4. Gazeta.ua после перехода на Phalcon 5. Yona CMS, особенности, модули 6. Практические приёмы работы с Phalcon 7. Трудности работы с Phalcon 8. Phalcon 2, Zephir
  3. 7.

    Компании, студии, программисты, фрилансеры, которые начали использовать Phalcon • http://lezgro.com/

    • http://wezoom.net/ • http://www.kiwisoft.co.uk/ • http://www.robertbojor.com/ • https://jream.com/ Рост популярности Phalcon
  4. 8.

    Фан-сайты по Phalcon Группа VK – https://vk.com/phalconphp Постоянные новости и

    анонсы из мира Phalcon. Обзор свежих разработок. Обсуждения. Рост популярности Phalcon
  5. 9.

    Фан-сайты по Phalcon Phalconist – каталог ресурсов для фреймворка Phalcon.

    http://phalconist.com/ Количество размещенных проектов: 167 Рост популярности Phalcon
  6. 10.

    Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4

    • Новый компонент Phalcon\Image • Phalcon\Config: добавлены адаптеры Json, Yaml • Phalcon\Translate: добавлен адаптер Gettext • Phalcon\Session: добавлены адаптеры Memcache, Libemcached • Phalcon\Cache: - Поддержка Libmemcached и APCu 4.0.2+ - Добавлены методы increment(), decrement(), flush() Изменения в Phalcon версии 1.x
  7. 11.

    Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4

    • Phalcon\Db: добавлена поддержка типов данных DECIMAL, DOUBLE, BOOLEAN, POINT • Phalcon\Forms: добавлен элемент Radio • Phalcon\Logger: добавлен адаптер FirePHP • Phalcon\Tag: - Добавлены пропущенные варианты type для элемента input в соответствии с HTML5 - Добавлен метод setTitleSeparator() - лично по моей просьбе  Изменения в Phalcon версии 1.x
  8. 12.

    Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4

    • Отработано около 475 багрепортов на github • Исправлено большое количество ошибок, в том числе критических • Исправлено большинство известных утечек памяти • Сделано множество улучшений API • Сделаны различные оптимизации фреймворка на уровне Си • В общем – все стало еще лучше Изменения в Phalcon версии 1.x
  9. 13.

    Phalcon Eye CMS написана на Phalcon http://phalconeye.com/ Автор: Иван Воронцов

    Особенности:  Управление пакетами  Визуальный конструктор страниц  Менеджер навигационного меню  Управление языками и переводами Популярные разработки на Phalcon
  10. 16.

    Phosphorum – движок форума на Phalcon. Используется официальным комьюнити Phalcon

    фреймворка. https://github.com/phalcon/forum http://forum.phalconphp.com/ Популярные разработки на Phalcon
  11. 17.

    Vegas-CMF – открытая система управления контентом на Phalcon. Разбита на

    отдельные составляющие и модули http://vegas-cmf.github.io/ https://github.com/vegas-cmf Популярные разработки на Phalcon
  12. 18.

    Схема работы на ZF1: Для увеличения производительности, приходилось использовать HTTP-прокси:

    Varnish → Nginx → Полностраничный кеш(APC) → ZF1 А также допиливать ZF1 MVC … Схема работы на Phalcon: Nginx → Phalcon Gazeta.ua после перехода на Phalcon
  13. 19.

    Тестирование PHP-слоя Проводилось на локальной машине: Core 2 Duo 2.04

    GHz 4Gb RAM Linux Mint 14 Nadia MATE 64-bit Apache 2.2.22 PHP 5.4.6 • Был исключен фактор запросов к БД • Без Varnish • Без полностраничного APC-кеша Gazeta.ua после перехода на Phalcon
  14. 20.

    Gazeta.ua после перехода на Phalcon Данные по Xdebug (php-слой, без

    БД) gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon мс 834 81 27 0 100 200 300 400 500 600 700 800 900 Скорость загрузки, мс
  15. 21.

    Gazeta.ua после перехода на Phalcon Firebug, ожидание ответа сервера (php-слой,

    без БД) gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon мс 210 50 20 0 50 100 150 200 250 Скорость загрузки, мс
  16. 22.

    Gazeta.ua после перехода на Phalcon ab -c 1000 -n 10

    (php-слой, без БД) gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon req/s 10,27 52,45 108,01 0,00 20,00 40,00 60,00 80,00 100,00 120,00 Кол-во запросов в секунду
  17. 23.

    Были ли преимущества от перехода? Однозначно ДА! Преимущества: • Отказ

    от HTTP-прокси (Varnish); • Отказ от полностраничного APC-кеша; • Данные отказы позволили ускорить написание нового функционала, без привязки к ним; • Рефакторинг всего существующего функционала; • Увеличение скорости отдачи страниц сервером ~ в 4 раза; • Увеличение устойчивости портала при высоких нагрузках ~ в 5 раз; Gazeta.ua после перехода на Phalcon
  18. 24.

    Yona CMS http://yonacms.com/ Автор: Александр Торош CMS/CMF система на Phalcon.

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

    Yona CMS позволяет значительно экономить время в стартовом развертывании необходимого

    базового функционала для любого проекта. На модульной структуре этой CMS уже успешно запущено более 10 проектов, среди которых Gazeta.ua - особенности, модули
  20. 26.

    Особенности: • Модульная структура с удобной иерархией, которая основана на

    namespace; • Каждый модуль может выступать как отдельный независимый компонент. Иметь свои маршруты, хелперы, less, css, js файлы; • Управление языками (в неограниченном количестве) и переводами прямо из админки; • AJAX-переходы по сайту со сменой URL в браузере из коробки. Без ущерба SEO; - особенности, модули
  21. 27.

    Особенности: • Модуль хранения и нарезки изображений Image; • Гибкий

    SEO-модуль; • Простота, интуитивная понятность админ. управления в модулях. Без сложностей и «переоптимизаций»; • Интерфейс админки построен на Semantic UI; • Стили интерфейса построены на LESS • Автоматическая минификация и сборка в единые assets-файлы - особенности, модули
  22. 28.

    Перечень готовых модулей: • CMS – конфигурация; • Admin –

    авторизация и админпанель; • FileManager – файловый менеджер; • Image – хранилище изображений; • Page – статические страницы; • Publication – динамические публикации (новости, статьи, блог - можно создавать новые типы); • SEO – модификация title, meta-тегов для любой страницы веб-приложения; • Slider – настраиваемые «слайдеры»; • Widget – статические HTML виджеты; - особенности, модули
  23. 34.

    Модуль Image, особенности: • Позволяет хранить изображения и нарезать их

    по заданным параметрам; • Схема директорий для хранения файлов рассчитана таким образом, что в одной папке не может быть более чем 1000 файлов; • Нарезанные изображения кешируются в виде JPEG-файлов; • Система защиты от параллельной генерации кеша определенного изображения (lock/unlock); • Используется компонент Phalcon\Image - особенности, модули
  24. 35.

    Модуль Image, пример использования: - особенности, модули $imageStorage = new

    \Image\Storage(array( ‘id’ => 256, // ID объекта в БД, например publication ‘type’ => ‘publication’, // тип ‘width’ => ‘300’ // ширина изображения )); // рендеринг HTML-тега изображения <img src=“***” alt=“***”> echo $imageStorage->imageHtml(); // Относительный путь к кешированному изображению шириной 300px $cached_src = $imageStorage->cachedRelPath(); // Абсолютный путь к оригиналу изображения $original_src = $imageStorage->originalAbsPath();
  25. 36.

    Планы на ближайшее будущее: • Простая инсталяция и развертывание проекта;

    • Полноценный конфигурационный модуль для CMS; • Кодогенерация прямо из админки: модулей, CRUD; • Миграции БД; • Управление подключаемыми модулями; • Создание набора модулей для интернет-магазина; • Написание полноценной документации на русском и английском языках; • Покритие тестами; - особенности, модули
  26. 38.

    Helper yona-cms / app / modules / Application / Mvc

    / Helper.php class Helper extends \Phalcon\Mvc\User\Component { public function translate($string, $placeholders = null) { if (!$this->translate) { $this->translate = $this->getDi()->get('translate'); } return $this->translate->query($string, $placeholders); } // Сюда можно добавить любые другие необходимые вам методы } Практические приёмы работы с Phalcon
  27. 39.

    Helper. Как этим пользоваться? Шаблон volt {{ helper.translate('Привет мир!') }}

    Controller $this->helper->translate('Привет мир!'); Доступ через DI-контейнер $helper = $this->getDi()->get('helper'); $helper->translate('Привет мир!'); Практические приёмы работы с Phalcon
  28. 40.

    Routes для каждого модуля отдельно yona-cms / app / Bootstrap.php

    $router = new \Application\Mvc\Router\DefaultRouter(); $router->setDi($di); foreach ($application->getModules() as $module) { $routesClassName = str_replace('Module', 'Routes', $module['className']); if (class_exists($routesClassName)) { $routesClass = new $routesClassName(); $router = $routesClass->init($router); } } $di->set('router', $router); Практические приёмы работы с Phalcon
  29. 41.

    Routes для каждого модуля отдельно yona-cms / app / modules

    / Page / Routes.php class Routes { public function init(\Phalcon\Mvc\Router $router) { $router->add('/{slug:[a-z0-9_-]+}.html', array( 'module' => 'page', 'controller' => 'index', 'action' => 'index' ))->setName('page'); return $router; } } Практические приёмы работы с Phalcon
  30. 42.

    Routes для каждого модуля отдельно Параметр $route, что передается в

    метод init() - это объект \Phalcon\Mvc\Router Вы можете использовать любые инициализации из документации http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Ro uter.html … а также методы addPost(), addPut(), addDelete() … Т.е. строить удобные модульные RESTful приложения Практические приёмы работы с Phalcon
  31. 43.

    • На разных аппаратных архитектурах могут возникать segfault ошибки и

    утечки памяти при работе с определенными функциями. • В ORM работа с Relations влечет за собой дополнительные запросы, что не совсем удобно. • Слой View по сравнению с другими популярными фреймворками достаточно бедный в своих возможностях. Радует то, что разработчики обещают все исправить и сделать фреймворк лучше Трудности работы с Phalcon
  32. 44.

    Особенности второй версии Phalcon: • Написан на Zephir. Это компилируемый

    язык высокого уровня, предназначен для облегчения создания и сопровождения расширений для PHP с акцентом на безопасность памяти. • Еще более производительный, чем первая версия • Обратная совместимость с Phalcon 1.3.x • Все тесты мигрированы на Codeception • Вносить вклад в развитие фреймворка становиться легче Phalcon 2
  33. 45.

    Уже доступна Beta 3. Изменения: • Phalcon 2.0 теперь на

    100% проходит тесты Phalcon 1.* • Благодаря «Zephir» новое ядро более полно проверяет соответствие классов и типов, вызывая более подробные сообщения о несоответствиях. • Язык «Zephir» так же более точно и полно выдаёт информацию об исключениях и их параметрах. • Phalcon 2 вообще более лучше работает с разными типами ошибок и исключениями. • Новое ядро использует оптимизации из PHP 5.6, что, непременно, благоприятно сказывается на производительности. Если вы используете версию PHP ниже, все будет работать, но без этих оптимизаций. Phalcon 2
  34. 46.

    • Phalcon стремительно набирает популярность в мире веб-разработки и уверенно

    занимает собственную нишу; • Phalcon постоянно избавляется от своих «детских болезней» и становиться лучше; • С разработкой Phalcon 2 и Zephir вносить вклад в развитие фреймворка становиться намного легче; • Zephir позволяет нам заглянуть «под капод» фреймворка, более детально изучить принцип работы; • Делать хорошие, быстрые production приложения на Phalcon возможно и даже нужно! Выводы