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

Dd3f18c87b851137000c7427d7bd5d32?s=47 fwdays
November 18, 2014

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

Dd3f18c87b851137000c7427d7bd5d32?s=128

fwdays

November 18, 2014
Tweet

Transcript

  1. Phalcon. Что нового? Александр Торош Веб-студия «WeZoom» oleksandr.torosh@wezoom.net

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

    cамый быстрый PHP Framework. Разработка highload проекта http://frameworksdays.com/event/php-frameworks- day-2013/review/Phalcon-PHP-Framework
  3. План доклада 1. Рост популярности Phalcon 2. Изменения в Phalcon

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

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

  6. Built with Phalcon – http://builtwith.phalconphp.com Рост популярности Phalcon

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

    • http://wezoom.net/ • http://www.kiwisoft.co.uk/ • http://www.robertbojor.com/ • https://jream.com/ Рост популярности Phalcon
  8. Фан-сайты по Phalcon Группа VK – https://vk.com/phalconphp Постоянные новости и

    анонсы из мира Phalcon. Обзор свежих разработок. Обсуждения. Рост популярности Phalcon
  9. Фан-сайты по Phalcon Phalconist – каталог ресурсов для фреймворка Phalcon.

    http://phalconist.com/ Количество размещенных проектов: 167 Рост популярности Phalcon
  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
  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
  12. Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4

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

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

  15. Phalcon Eye – Pages Популярные разработки на Phalcon

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

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

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

    Varnish → Nginx → Полностраничный кеш(APC) → ZF1 А также допиливать ZF1 MVC … Схема работы на Phalcon: Nginx → Phalcon Gazeta.ua после перехода на Phalcon
  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
  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 Скорость загрузки, мс
  21. Gazeta.ua после перехода на Phalcon Firebug, ожидание ответа сервера (php-слой,

    без БД) gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon мс 210 50 20 0 50 100 150 200 250 Скорость загрузки, мс
  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 Кол-во запросов в секунду
  23. Были ли преимущества от перехода? Однозначно ДА! Преимущества: • Отказ

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

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

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

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

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

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

  30. Модульная структура Директория приложения app - особенности, модули

  31. Модульная структура Конфигурационные файлы - особенности, модули

  32. Модульная структура Модули приложения - особенности, модули

  33. Модульная структура Структура модуля и его шаблоны View - особенности,

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

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

    • Полноценный конфигурационный модуль для CMS; • Кодогенерация прямо из админки: модулей, CRUD; • Миграции БД; • Управление подключаемыми модулями; • Создание набора модулей для интернет-магазина; • Написание полноценной документации на русском и английском языках; • Покритие тестами; - особенности, модули
  37. Helper yona-cms / app / Bootstrap.php $di->set('helper', new \Application\Mvc\Helper()); Практические

    приёмы работы с Phalcon
  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
  39. Helper. Как этим пользоваться? Шаблон volt {{ helper.translate('Привет мир!') }}

    Controller $this->helper->translate('Привет мир!'); Доступ через DI-контейнер $helper = $this->getDi()->get('helper'); $helper->translate('Привет мир!'); Практические приёмы работы с Phalcon
  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
  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
  42. Routes для каждого модуля отдельно Параметр $route, что передается в

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

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

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

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

    занимает собственную нишу; • Phalcon постоянно избавляется от своих «детских болезней» и становиться лучше; • С разработкой Phalcon 2 и Zephir вносить вклад в развитие фреймворка становиться намного легче; • Zephir позволяет нам заглянуть «под капод» фреймворка, более детально изучить принцип работы; • Делать хорошие, быстрые production приложения на Phalcon возможно и даже нужно! Выводы
  47. Спасибо за внимание! Александр Торош Веб-студия «WeZoom» wezoom.net oleksandr.torosh@wezoom.net Тел:

    (044) 221-65-78 (096) 989-08-28 (063) 787-22-36