SlideShare a Scribd company logo
Phalcon 2
Stabilization and performance
Serghei Iakovlev
Genesis Technology Partners
github.com/sergeyklay
serghei@phalconphp.com
План доклада
●
Знакомьтесь — Phalcon
●
Важные изменения за последний год
●
Что ожидается от версии 2.1
●
LTS версия и система релизов
●
Как принять участие в разработке
●
Поддержка PHP 7
●
Развитие Zephir
●
В чём мы нуждаемся
Знакомьтесь — Phalcon
Тест производительности
Hello World
0
0.5
1
1.5
2
Zend
Symfony
Yii
Laravel
Kohana
CI
Fuel
Расход памяти (мб на один запрос)
Phalcon
0
20
40
60
80Zend
Symfony
Kohana
Число используемых файлов (на запрос)
CI
Phalcon
Yii
Fuel
Laravel
Zend
Kohana
Phalcon
Время на запрос (для всех параллельных запросов)
0.00
0.75
1.50
2.25
3.00
CI
Yii
Fuel
Symfony
Laravel
Zend
Kohana
Число обработанных запросов в секунду
750
1,500
2,250
3,000
Phalcon
CI
Yii
Fuel
Symfony
Laravel
Другие тесты?
goo.gl/DOwCLt
Изменения за последний год
2.0.0 — 17 апреля
2.0.1 — 10 мая
2.0.2 — 26 мая
2.0.3 — 10 июня
2.0.4 — 7 июля
2.0.5 — 17 июля
2.0.6 — 21 июля
2.0.7 — 17 августа
2.0.8 — 25 сентября
● Язык высокого уровня
● Динамическая и статическая строгая типизация
● Контроль памяти
● Схож с PHP
// PHP 7
public function getAddress() : Address {
return $this->address;
}
// Zephir
public function getAddress() -> <Address> {
return this->address;
}
// PHP 7
public function hello(string $name) : string {
return 'Hello ' . $name;
}
// Zephir
public function hello(string name) -> string {
return "Hello " . name;
}
Что ожидается от версии 2.1
// deprecated // in favor of
PhalconMvcModelValidation => PhalconValidation
new Customer(
[
'name' => 'Peter',
'status' => 'Active',
]
);
// JsonSerializable
$customer = Customer::findFirst(1);
echo json_encode($customer);
Объединение Validation
Улучшения в моделях
$di->set('service', function () use ($di) {
$anotherService = $di->getShared('anotherService');
$anotherService-> ...
});
$di->set('service', function () {
$this->anotherService-> ...
});
public function beforeServiceResolve($e, $di, $params)
{
// ...
return new MyClass;
}
Улучшена работа с зависимостями
$view->setViewsDir(
[
'/var/www/htdocs/blog/modules/backend/views/',
'/var/www/htdocs/blog/common/views/',
]
);
$view->setLayoutsDir(
'/var/www/htdocs/common/views/layouts/'
);
$view->setPartialsDir(
'/var/www/htdocs/common/views/partials/'
);
Несколько директорий для вьюх
public function loginAction()
{
return false; // $this->view->disable();
}
public function helloAction()
{
return '<h1>Hello world!</h1>';
}
public function welcomeAction($name)
{
return $this->view->render('welcome/index', [
'name' => $name
]);
}
Что можем вернуть из контроллера
$router->add('/short-url', [])->match(function () {
$response = $this->getResponse();
return $response->redirect('http://fwdays.com/');
});
$router->add('/', [])->match(function () {
return '<h1>It works</h1>';
});
Переопределяем поведение диспетчера
LTS версия и система релизов
● 1.2.x до 2014-03-17 (не поддерживается)
● 1.3.х до 2015-05-08 (не поддерживается)
● 2.0.х до 2016-04-17
● 2.1.х 2 года с момента выхода
Срок поддержки версий
Система версионирования
Версии нумеруются в формате A.B.C
Мажорная версия A.B
Минорная версия A.B.C
Обратная совместимость между A.B.C и A.B.C+1
Периодичность релизов
Мажорные релизы — 6-9 месяцев
Минорные релизы — 3-5 недель
Как принять участие в
разработке
Vagrant для быстрого старта
● Ubuntu 14.04.3 LTS
● Apache 2.4
● PHP 5.5
● MySQL 5.6
● Git 1.9
● Memcached 1.4
● Beanstalkd 1.9
● Composer
● Zephir 0.8
● SQLite 2.8
● PostgreSQL 9.4
● Phalcon
● Phalcon Dev Tools
● Redis 2.8
● MongoDB 2.0
github.com/phalcon/vagrant
4 шага для запуска Vagrant
git clone git@github.com:phalcon/vagrant.git
cd vagrant
vagrant up
vagrant ssh
Основные шаги
● Реализовать новую фичу / исправить баг
● Написать тесты
● Собрать у себя локально
● PR в dev ветку
namespace Utils;
class Text
{
public static function camelize(string! str) -> string
{
return str->camelize();
}
}
class Text extends UtilsText
{
public static function camelize($str)
{
return parent::camelize($str);
}
}
Тестирование и отчёт о покрытии кода
Поддержка PHP 7
Краткая история
2000 — PHP 4
2004 — PHP 5
2015 — PHP 7
Zend Engine 1
Zend Engine 2
Zend Engine 3
Развитие Zephir
class McallInternal
{
internal function fibonacci(long n) -> long
{
if n == 1 || n == 2 {
return 1;
}
return this->fibonacci(n - 1) +
this->fibonacci(n - 2);
}
public function callFibonacci(long n) -> long
{
return this->fibonacci(n);
}
}
Область видимости internal
class Math
{
function fibonacci($n)
{
if ($n == 1 || $n == 2) {
return 1;
}
return $this->fibonacci($n - 1) +
$this->fibonacci($n - 2);
}
}
Пример fibonacci на PHP
$t = microtime(true);
(new TestMcallinternal)->callFibonacci(31);
echo 'Zephir: ', microtime(true) - $t, PHP_EOL;
$t = microtime(true);
(new Math)->fibonacci(31);
echo 'PHP 5.6: ', microtime(true) - $t, PHP_EOL;
Zephir: 0.12126803398132
PHP 5.6: 0.613104820251464
Zephir: 0.12285614013672
PHP 5.6: 0.55841708183289
4.5/5x 450%/500% improvement
Zephir Core Team
Steffen Butzer
@steffengy
Andres Gutierrez
@andresgutierrez
В чём мы нуждаемся
• Документация
• Интернационализация
• Тесты
• Евангелизм
• Примеры приложений
• Блог
• Поделитесь своим опытом
• Социальные сети
• Пожертвования / спонсорство
Спасибо за внимание
docs.phalconphp.com
forum.phalconphp.com
github.com/phalcon
pledgie.com/campaigns/27405
Сергей Яковлев
Genesis Technology Partners
github.com/sergeyklay
serghei@phalconphp.com
Вопросы?

More Related Content

PDF
Phalcon. Что нового?
Oleksandr Torosh
 
PDF
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
PPTX
Александр Трищенко: Phalcon framework
Oleg Poludnenko
 
PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
PDF
Dump-IT Загрузка и инициализация JavaScript
Mikhail Davydov
 
PDF
"Доклад не про React", Антон Виноградов, MoscowJS 27
MoscowJS
 
PPTX
антон веснин Rails Application Servers
rit2010
 
PPTX
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 
Phalcon. Что нового?
Oleksandr Torosh
 
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
Александр Трищенко: Phalcon framework
Oleg Poludnenko
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Dump-IT Загрузка и инициализация JavaScript
Mikhail Davydov
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
MoscowJS
 
антон веснин Rails Application Servers
rit2010
 
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
 

What's hot (19)

PPT
Maven как средство сборки проекта
Yova Stoika
 
PPT
PHP: SAPI
Max Romanovsky
 
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
WrikeTechClub
 
PDF
Михаил Боднарчук "Docker для PHP разработчиков"
Fwdays
 
PDF
2020.10.13 HA Redis is simple. FWDays Highload
Yehor Herasymchuk
 
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
PPTX
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
chaykaborya
 
PPT
Воюем за ресурсы (ZFConf2011)
Alexey Kachayev
 
PDF
Конструктор / Денис Паясь (Яндекс)
Ontico
 
PPTX
Maven 3 : уличная магия
Aleksey Solntsev
 
PPTX
системы сборок проектов
Romero78
 
PDF
"Посмотрим на Акку-Джаву" Дмитрий Мантула
Fwdays
 
PPT
Flex Data Access
sergiy
 
PDF
Jiramania презентации @augspb
Gonchik Tsymzhitov
 
PPTX
Heroku for Java developer
VRPInc
 
PPT
Макс Лапшин Erlyvideo
Siel01
 
PPTX
Vagrant puppet
Peri Innovations
 
PDF
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
Maven как средство сборки проекта
Yova Stoika
 
PHP: SAPI
Max Romanovsky
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
WrikeTechClub
 
Михаил Боднарчук "Docker для PHP разработчиков"
Fwdays
 
2020.10.13 HA Redis is simple. FWDays Highload
Yehor Herasymchuk
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
chaykaborya
 
Воюем за ресурсы (ZFConf2011)
Alexey Kachayev
 
Конструктор / Денис Паясь (Яндекс)
Ontico
 
Maven 3 : уличная магия
Aleksey Solntsev
 
системы сборок проектов
Romero78
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
Fwdays
 
Flex Data Access
sergiy
 
Jiramania презентации @augspb
Gonchik Tsymzhitov
 
Heroku for Java developer
VRPInc
 
Макс Лапшин Erlyvideo
Siel01
 
Vagrant puppet
Peri Innovations
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
Ad

Viewers also liked (20)

PDF
Michael North "The Road to Native Web Components"
Fwdays
 
PDF
Александр Воронов | Building CLI with Swift
Fwdays
 
PDF
Андрей Шумада | Tank.ly
Fwdays
 
PDF
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
Fwdays
 
PDF
4 puchnina.pptx
Fwdays
 
PPT
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
PDF
Fighting Fat Models (Богдан Гусев)
Fwdays
 
PPTX
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Fwdays
 
PDF
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Fwdays
 
PPTX
Сергей Жук "Android Performance Tips & Tricks"
Fwdays
 
PDF
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Fwdays
 
PDF
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
PDF
Светлана Старикова "Building a self-managing team: why you should not have e...
Fwdays
 
PDF
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
PDF
Designing for Privacy
exultantwarning51
 
PPTX
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 
PPTX
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
PDF
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
PDF
Скрам и Канбан: применимость самых распространенных методов организации умств...
Fwdays
 
PDF
Евгений Жарков AngularJS: Good parts
Fwdays
 
Michael North "The Road to Native Web Components"
Fwdays
 
Александр Воронов | Building CLI with Swift
Fwdays
 
Андрей Шумада | Tank.ly
Fwdays
 
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
Fwdays
 
4 puchnina.pptx
Fwdays
 
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
Fighting Fat Models (Богдан Гусев)
Fwdays
 
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Fwdays
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Fwdays
 
Сергей Жук "Android Performance Tips & Tricks"
Fwdays
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Fwdays
 
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
Светлана Старикова "Building a self-managing team: why you should not have e...
Fwdays
 
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
Designing for Privacy
exultantwarning51
 
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
Скрам и Канбан: применимость самых распространенных методов организации умств...
Fwdays
 
Евгений Жарков AngularJS: Good parts
Fwdays
 
Ad

Similar to Сергей Яковлев "Phalcon 2 - стабилизация и производительность" (20)

PDF
WebCamp 2016: PHP.Сергей Яковлев.Phalcon 3
WebCamp
 
PPTX
Микрофреймворки PHP
Ekaterina Giganova
 
PDF
Релиз PHP7 - что нас ждет в октябре 2015
Andrey Tokarchuk
 
PDF
Рефакторинг монолита в микросервисы на Go
Andrew Minkin
 
PDF
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
Mad Devs
 
PPTX
Php and frameworks
Alexandr Drobyshevsky
 
PDF
Компиляция скриптов PHP (Алексей Романенко)
Ontico
 
PDF
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
PDF
Виртуализация как инструмент разработчика
Alexander Kirillov
 
PDF
Виртуализация как инструмент разработчика
Open-IT
 
PDF
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
Омские ИТ-субботники
 
PDF
«​Масштабируемый DevOps​» Александр Колесень
IT Share
 
PDF
Масштабируемый DevOps
Minsk Linux User Group
 
PDF
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
 
PDF
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
PDF
SymfonyConf IV.2016 - Реанимация проектов на Symfony
Serge Velikanov
 
PDF
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
 
PDF
JPoint 2017 - Where is my service, dude?
Viet Nguyen
 
PPT
Vagrant: tool for development and testing
StanislavMalkin
 
PDF
Sivko
kuchinskaya
 
WebCamp 2016: PHP.Сергей Яковлев.Phalcon 3
WebCamp
 
Микрофреймворки PHP
Ekaterina Giganova
 
Релиз PHP7 - что нас ждет в октябре 2015
Andrey Tokarchuk
 
Рефакторинг монолита в микросервисы на Go
Andrew Minkin
 
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
Mad Devs
 
Php and frameworks
Alexandr Drobyshevsky
 
Компиляция скриптов PHP (Алексей Романенко)
Ontico
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
Виртуализация как инструмент разработчика
Alexander Kirillov
 
Виртуализация как инструмент разработчика
Open-IT
 
2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.
Омские ИТ-субботники
 
«​Масштабируемый DevOps​» Александр Колесень
IT Share
 
Масштабируемый DevOps
Minsk Linux User Group
 
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
SymfonyConf IV.2016 - Реанимация проектов на Symfony
Serge Velikanov
 
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
 
JPoint 2017 - Where is my service, dude?
Viet Nguyen
 
Vagrant: tool for development and testing
StanislavMalkin
 

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 

Сергей Яковлев "Phalcon 2 - стабилизация и производительность"