SlideShare a Scribd company logo
Phalcon. Что нового?
Александр Торош
Веб-студия «WeZoom»
oleksandr.torosh@wezoom.net
Годом ранее…
PHP Frameworks Day
12 октября 2013
Phalcon - cамый быстрый PHP Framework.
Разработка highload проекта
http://frameworksdays.com/event/php-frameworks-
day-2013/review/Phalcon-PHP-Framework
План доклада
1. Рост популярности Phalcon
2. Изменения в Phalcon версии 1.x
3. Обзор популярных разработок
4. Gazeta.ua после перехода на Phalcon
5. Yona CMS, особенности, модули
6. Практические приёмы работы с Phalcon
7. Трудности работы с Phalcon
8. Phalcon 2, Zephir
Считаем Stars на Github у популярных фреймворков
Рост популярности Phalcon
Поддержка хостингами и облачными сервисами
Рост популярности Phalcon
Built with Phalcon – http://builtwith.phalconphp.com
Рост популярности Phalcon
Компании, студии, программисты, фрилансеры,
которые начали использовать Phalcon
• http://lezgro.com/
• http://wezoom.net/
• http://www.kiwisoft.co.uk/
• http://www.robertbojor.com/
• https://jream.com/
Рост популярности Phalcon
Фан-сайты по Phalcon
Группа VK –
https://vk.com/phalconphp
Постоянные новости и
анонсы из мира Phalcon.
Обзор свежих разработок.
Обсуждения.
Рост популярности Phalcon
Фан-сайты по Phalcon
Phalconist – каталог ресурсов для
фреймворка Phalcon.
http://phalconist.com/
Количество размещенных проектов: 167
Рост популярности Phalcon
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Новый компонент PhalconImage
• PhalconConfig: добавлены адаптеры Json, Yaml
• PhalconTranslate: добавлен адаптер Gettext
• PhalconSession: добавлены адаптеры Memcache,
Libemcached
• PhalconCache:
- Поддержка Libmemcached и APCu 4.0.2+
- Добавлены методы increment(), decrement(), flush()
Изменения в Phalcon версии 1.x
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• PhalconDb: добавлена поддержка типов данных
DECIMAL, DOUBLE, BOOLEAN, POINT
• PhalconForms: добавлен элемент Radio
• PhalconLogger: добавлен адаптер FirePHP
• PhalconTag:
- Добавлены пропущенные варианты type для
элемента input в соответствии с HTML5
- Добавлен метод setTitleSeparator() - лично по моей
просьбе 
Изменения в Phalcon версии 1.x
Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4
• Отработано около 475 багрепортов на github
• Исправлено большое количество ошибок, в том числе
критических
• Исправлено большинство известных утечек памяти
• Сделано множество улучшений API
• Сделаны различные оптимизации фреймворка на
уровне Си
• В общем – все стало еще лучше
Изменения в Phalcon версии 1.x
Phalcon Eye
CMS написана на Phalcon http://phalconeye.com/
Автор: Иван Воронцов
Особенности:
 Управление пакетами
 Визуальный конструктор страниц
 Менеджер навигационного меню
 Управление языками и переводами
Популярные разработки на Phalcon
Phalcon Eye – Pages
Популярные разработки на Phalcon
Phalcon Eye – Pages
Популярные разработки на Phalcon
Phosphorum – движок форума на
Phalcon. Используется официальным
комьюнити Phalcon фреймворка.
https://github.com/phalcon/forum
http://forum.phalconphp.com/
Популярные разработки на Phalcon
Vegas-CMF – открытая система
управления контентом на Phalcon.
Разбита на отдельные составляющие
и модули
http://vegas-cmf.github.io/
https://github.com/vegas-cmf
Популярные разработки на Phalcon
Схема работы на ZF1:
Для увеличения производительности,
приходилось использовать HTTP-прокси:
Varnish → Nginx → Полностраничный
кеш(APC) → ZF1
А также допиливать ZF1 MVC …
Схема работы на Phalcon:
Nginx → Phalcon
Gazeta.ua после перехода на Phalcon
Тестирование 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
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
Скоростьзагрузки,мс
Gazeta.ua после перехода на Phalcon
Firebug, ожидание ответа сервера
(php-слой, без БД)
gazeta.ua zf1 gazeta.ua phalcon yona-cms phalcon
мс 210 50 20
0
50
100
150
200
250
Скоростьзагрузки,мс
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
Кол-возапросоввсекунду
Были ли преимущества от перехода?
Однозначно ДА!
Преимущества:
• Отказ от HTTP-прокси (Varnish);
• Отказ от полностраничного APC-кеша;
• Данные отказы позволили ускорить написание нового
функционала, без привязки к ним;
• Рефакторинг всего существующего функционала;
• Увеличение скорости отдачи страниц сервером
~ в 4 раза;
• Увеличение устойчивости портала при высоких
нагрузках ~ в 5 раз;
Gazeta.ua после перехода на Phalcon
Yona CMS
http://yonacms.com/
Автор: Александр Торош
CMS/CMF система на Phalcon. Имеет удобную
модульную структуру. Предназначена для
разработки простых сайтов, так и крупных порталов
и веб-приложений.
Благодаря не сложной конфигурации и простой
архитектуре, может быть легко модифицирована
под любую задачу.
- особенности, модули
Yona CMS позволяет значительно экономить
время в стартовом развертывании необходимого
базового функционала для любого проекта.
На модульной структуре этой CMS уже успешно
запущено более 10 проектов, среди которых
Gazeta.ua
- особенности, модули
Особенности:
• Модульная структура с удобной иерархией, которая
основана на namespace;
• Каждый модуль может выступать как отдельный
независимый компонент. Иметь свои маршруты,
хелперы, less, css, js файлы;
• Управление языками (в неограниченном количестве)
и переводами прямо из админки;
• AJAX-переходы по сайту со сменой URL в браузере
из коробки. Без ущерба SEO;
- особенности, модули
Особенности:
• Модуль хранения и нарезки изображений Image;
• Гибкий SEO-модуль;
• Простота, интуитивная понятность админ.
управления в модулях. Без сложностей и
«переоптимизаций»;
• Интерфейс админки построен на Semantic UI;
• Стили интерфейса построены на LESS
• Автоматическая минификация и сборка в единые
assets-файлы
- особенности, модули
Перечень готовых модулей:
• CMS – конфигурация;
• Admin – авторизация и админпанель;
• FileManager – файловый менеджер;
• Image – хранилище изображений;
• Page – статические страницы;
• Publication – динамические публикации (новости,
статьи, блог - можно создавать новые типы);
• SEO – модификация title, meta-тегов для любой
страницы веб-приложения;
• Slider – настраиваемые «слайдеры»;
• Widget – статические HTML виджеты;
- особенности, модули
Модульная структура
Общий вид проекта
- особенности, модули
Модульная структура
Директория приложения app
- особенности, модули
Модульная структура
Конфигурационные файлы
- особенности, модули
Модульная структура
Модули приложения
- особенности, модули
Модульная структура
Структура модуля и его шаблоны View
- особенности, модули
Модуль Image, особенности:
• Позволяет хранить изображения и нарезать их по
заданным параметрам;
• Схема директорий для хранения файлов рассчитана
таким образом, что в одной папке не может быть
более чем 1000 файлов;
• Нарезанные изображения кешируются в виде
JPEG-файлов;
• Система защиты от параллельной генерации кеша
определенного изображения (lock/unlock);
• Используется компонент PhalconImage
- особенности, модули
Модуль Image, пример использования:
- особенности, модули
$imageStorage = new ImageStorage(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();
Планы на ближайшее будущее:
• Простая инсталяция и развертывание проекта;
• Полноценный конфигурационный модуль для CMS;
• Кодогенерация прямо из админки: модулей, CRUD;
• Миграции БД;
• Управление подключаемыми модулями;
• Создание набора модулей для интернет-магазина;
• Написание полноценной документации на русском и
английском языках;
• Покритие тестами;
- особенности, модули
Helper
yona-cms / app / Bootstrap.php
$di->set('helper', new ApplicationMvcHelper());
Практические приёмы работы с Phalcon
Helper
yona-cms / app / modules / Application / Mvc / Helper.php
class Helper extends PhalconMvcUserComponent
{
public function translate($string, $placeholders = null)
{
if (!$this->translate) {
$this->translate = $this->getDi()->get('translate');
}
return $this->translate->query($string, $placeholders);
}
// Сюда можно добавить любые другие необходимые вам методы
}
Практические приёмы работы с Phalcon
Helper. Как этим пользоваться?
Шаблон volt
{{ helper.translate('Привет мир!') }}
Controller
$this->helper->translate('Привет мир!');
Доступ через DI-контейнер
$helper = $this->getDi()->get('helper');
$helper->translate('Привет мир!');
Практические приёмы работы с Phalcon
Routes для каждого модуля отдельно
yona-cms / app / Bootstrap.php
$router = new ApplicationMvcRouterDefaultRouter();
$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
Routes для каждого модуля отдельно
yona-cms / app / modules / Page / Routes.php
class Routes
{
public function init(PhalconMvcRouter $router)
{
$router->add('/{slug:[a-z0-9_-]+}.html', array(
'module' => 'page',
'controller' => 'index',
'action' => 'index'
))->setName('page');
return $router;
}
}
Практические приёмы работы с Phalcon
Routes для каждого модуля отдельно
Параметр $route, что передается в метод init() - это
объект PhalconMvcRouter
Вы можете использовать любые инициализации из
документации
http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Ro
uter.html
… а также методы addPost(), addPut(), addDelete() …
Т.е. строить удобные модульные RESTful приложения
Практические приёмы работы с Phalcon
• На разных аппаратных архитектурах могут возникать
segfault ошибки и утечки памяти при работе с
определенными функциями.
• В ORM работа с Relations влечет за собой
дополнительные запросы, что не совсем удобно.
• Слой View по сравнению с другими популярными
фреймворками достаточно бедный в своих
возможностях.
Радует то, что разработчики обещают все исправить
и сделать фреймворк лучше
Трудности работы с Phalcon
Особенности второй версии Phalcon:
• Написан на Zephir.
Это компилируемый язык высокого уровня, предназначен
для облегчения создания и сопровождения расширений для
PHP с акцентом на безопасность памяти.
• Еще более производительный, чем первая версия
• Обратная совместимость с Phalcon 1.3.x
• Все тесты мигрированы на Codeception
• Вносить вклад в развитие фреймворка становиться
легче
Phalcon 2
Уже доступна Beta 3. Изменения:
• Phalcon 2.0 теперь на 100% проходит тесты Phalcon 1.*
• Благодаря «Zephir» новое ядро более полно проверяет
соответствие классов и типов, вызывая более
подробные сообщения о несоответствиях.
• Язык «Zephir» так же более точно и полно выдаёт
информацию об исключениях и их параметрах.
• Phalcon 2 вообще более лучше работает с разными
типами ошибок и исключениями.
• Новое ядро использует оптимизации из PHP 5.6, что,
непременно, благоприятно сказывается на
производительности. Если вы используете версию PHP
ниже, все будет работать, но без этих оптимизаций.
Phalcon 2
• Phalcon стремительно набирает популярность в мире
веб-разработки и уверенно занимает собственную
нишу;
• Phalcon постоянно избавляется от своих «детских
болезней» и становиться лучше;
• С разработкой Phalcon 2 и Zephir вносить вклад в
развитие фреймворка становиться намного легче;
• Zephir позволяет нам заглянуть «под капод»
фреймворка, более детально изучить принцип
работы;
• Делать хорошие, быстрые production приложения на
Phalcon возможно и даже нужно!
Выводы
Спасибо за внимание!
Александр Торош
Веб-студия «WeZoom»
wezoom.net
oleksandr.torosh@wezoom.net
Тел: (044) 221-65-78
(096) 989-08-28
(063) 787-22-36

More Related Content

What's hot

Dump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScript
Mikhail Davydov
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
Gonchik Tsymzhitov
 
Flex Data Access
Flex Data AccessFlex Data Access
Flex Data Access
sergiy
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
PHP: SAPI
PHP: SAPIPHP: SAPI
PHP: SAPI
Max Romanovsky
 
Symfony as the platform for open source projects (sympal, apostrophe, diem)
Symfony as the platform for open source projects (sympal, apostrophe, diem)Symfony as the platform for open source projects (sympal, apostrophe, diem)
Symfony as the platform for open source projects (sympal, apostrophe, diem)Alex Demchenko
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
chaykaborya
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
 
Эволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторингЭволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторинг
zfconfua
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
vovasik
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
Fwdays
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 

What's hot (20)

Dump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScript
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Flex Data Access
Flex Data AccessFlex Data Access
Flex Data Access
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
PHP: SAPI
PHP: SAPIPHP: SAPI
PHP: SAPI
 
Symfony as the platform for open source projects (sympal, apostrophe, diem)
Symfony as the platform for open source projects (sympal, apostrophe, diem)Symfony as the platform for open source projects (sympal, apostrophe, diem)
Symfony as the platform for open source projects (sympal, apostrophe, diem)
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Эволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторингЭволюция ZF: архитектура, шаблоны, рефакторинг
Эволюция ZF: архитектура, шаблоны, рефакторинг
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 

Similar to Phalcon. Что нового?

Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
Amasty
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flashguestb0af15
 
Eleanor CMS
Eleanor CMSEleanor CMS
Eleanor CMSSC3402
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
Sergey Skvortsov
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
FFCMS - вводная для пользователя
FFCMS - вводная для пользователяFFCMS - вводная для пользователя
FFCMS - вводная для пользователя
zenn1989
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Миграция Web-проекта в облако. И.Гальцев.
Миграция Web-проекта в облако. И.Гальцев.Миграция Web-проекта в облако. И.Гальцев.
Миграция Web-проекта в облако. И.Гальцев.Clouds NN
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Joomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruJoomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ru
hotwebstudio.ru
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?
Eugene Zharkov
 
Eleanor
EleanorEleanor
EleanorSC3402
 
Eleanor
EleanorEleanor
EleanorSC3402
 
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4rit2011
 
Web deployment
Web deploymentWeb deployment
Web deployment
GetDev.NET
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Symfony 3
Symfony 3Symfony 3
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 

Similar to Phalcon. Что нового? (20)

Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
Eleanor CMS
Eleanor CMSEleanor CMS
Eleanor CMS
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
FFCMS - вводная для пользователя
FFCMS - вводная для пользователяFFCMS - вводная для пользователя
FFCMS - вводная для пользователя
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Миграция Web-проекта в облако. И.Гальцев.
Миграция Web-проекта в облако. И.Гальцев.Миграция Web-проекта в облако. И.Гальцев.
Миграция Web-проекта в облако. И.Гальцев.
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Joomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruJoomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ru
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?Silverlight 4, есть ли жизнь на десктопе?
Silverlight 4, есть ли жизнь на десктопе?
 
Eleanor
EleanorEleanor
Eleanor
 
Eleanor
EleanorEleanor
Eleanor
 
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 

Phalcon. Что нового?

  • 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 • Новый компонент PhalconImage • PhalconConfig: добавлены адаптеры Json, Yaml • PhalconTranslate: добавлен адаптер Gettext • PhalconSession: добавлены адаптеры Memcache, Libemcached • PhalconCache: - Поддержка Libmemcached и APCu 4.0.2+ - Добавлены методы increment(), decrement(), flush() Изменения в Phalcon версии 1.x
  • 11. Изменения за год (Oct 2013 – Nov 2014) 1.2.4 1.3.4 • PhalconDb: добавлена поддержка типов данных DECIMAL, DOUBLE, BOOLEAN, POINT • PhalconForms: добавлен элемент Radio • PhalconLogger: добавлен адаптер FirePHP • PhalconTag: - Добавлены пропущенные варианты 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. Модульная структура Общий вид проекта - особенности, модули
  • 33. Модульная структура Структура модуля и его шаблоны View - особенности, модули
  • 34. Модуль Image, особенности: • Позволяет хранить изображения и нарезать их по заданным параметрам; • Схема директорий для хранения файлов рассчитана таким образом, что в одной папке не может быть более чем 1000 файлов; • Нарезанные изображения кешируются в виде JPEG-файлов; • Система защиты от параллельной генерации кеша определенного изображения (lock/unlock); • Используется компонент PhalconImage - особенности, модули
  • 35. Модуль Image, пример использования: - особенности, модули $imageStorage = new ImageStorage(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 ApplicationMvcHelper()); Практические приёмы работы с Phalcon
  • 38. Helper yona-cms / app / modules / Application / Mvc / Helper.php class Helper extends PhalconMvcUserComponent { 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 ApplicationMvcRouterDefaultRouter(); $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(PhalconMvcRouter $router) { $router->add('/{slug:[a-z0-9_-]+}.html', array( 'module' => 'page', 'controller' => 'index', 'action' => 'index' ))->setName('page'); return $router; } } Практические приёмы работы с Phalcon
  • 42. Routes для каждого модуля отдельно Параметр $route, что передается в метод init() - это объект PhalconMvcRouter Вы можете использовать любые инициализации из документации 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