SlideShare a Scribd company logo
PHP. Ускорение,
о котором нет смысла
спорить.
Александр Курочкин
function emails_split($emails) {
$slen = strlen($emails);
$accu = “”; $emails_arr = array();
for($i =0; $i < $slen; $i++) {
if(ord($emails[$i]) == 59) {
$emails_arr[] = $accu;
$accu = “”;
} else {
$accu .= $emails[$i];
}
}
$emails_arr[] = $accu;
return $emails_arr;
}
Типы PHP фреймворков
● PHP-based
○ Symfony, ZF, CI, Yii, CakePHP...
● C-based
○ YAF, Phalcon
Что это такое?
C-based PHP framework это PHP расширение.
Такое же как многие другие.
gd, bcmath, iconv, mysqli, PDO...
> php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
…
yaf
Zend OPcache
zip
YAF
http://yafdev.com/
http://php.net/manual/en/intro.yaf.php
https://github.com/laruence/php-yaf
Расширение Yet Another Framework (Yaf) является PHP-фреймворком для
разработки веб-приложений.
Introduce
● Yaf is the first PHP MVC framework which is written in C and build as PHP
extension.
● It is developed by @Laruence, A PHP core contributor, who has also developed
Yar, Yac etc
● It is considered as the fastest and the lowest resource consuming PHP framework
for now.
● It is well tested and has been applied successfully in many high traffic products
inBaidu, Sina, Weibo and other companies.
Замеры
http://www.ruilog.com/blog/view/b6f0e42cf705.html
http://www.laruence.com/2012/09/16/2791.html
Установка YAF
> apt-get install php5-dev // it install phpize
> apt-get install php-pear // it install PECL
> pecl install yaf
-------------------------- или ---------------------------
> sudo add-apt-repository ppa:mikespook/php5-yaf
> sudo apt-get update
> sudo apt-get install php5-yaf
YAF
- index.php
- .htaccess
+ conf
|- application.ini
- application/
- Bootstrap.php
+ controllers
- Index.php
+ views
|+ index
- index.phtml
+ modules
- library
- models
- plugins
структура файлов
index.php единственная точка входа в
приложение, все запросы вы должны
направлять через него.
Yaf_​Application
Yaf_​Bootstrap_​Abstract
Yaf_​Dispatcher
Yaf_​Config_​Abstract
Yaf_​Config_​Ini
Yaf_​Config_​Simple
Yaf_​Controller_​Abstract
Yaf_​Action_​Abstract
Yaf_​View_​Interface
Yaf_​View_​Simple
Yaf_​Loader
Yaf_​Plugin_​Abstract
Yaf_​Registry
Yaf_​Request_​Abstract
Yaf_​Request_​Http
Yaf_​Request_​Simple
Yaf_​Response_​Abstract
Yaf_​Route_​Interface
Yaf_​Route_​Map
Yaf_​Route_​Regex
Yaf_​Route_​Rewrite
Yaf_​Router
Yaf_​Route_​Simple
Yaf_​Route_​Static
Yaf_​Route_​Supervar
Yaf_​Session
Yaf_​Exception
Yaf_​Exception_​TypeError
Yaf_​Exception_​StartupError
Yaf_​Exception_​DispatchFailed
Yaf_​Exception_​RouterFailed
Yaf_​Exception_​LoadFailed
Yaf_​Exception_​LoadFailed_​Module
Yaf_​Exception_​LoadFailed_​Controller
Yaf_​Exception_​LoadFailed_​Action
Yaf_​Exception_​LoadFailed_​View
36 интерфейсов
и классов,
включая абстрактные.
​Application
​Bootstrap
​Dispatcher
​Config
​Controller
​Action
​View
​Loader
​Plugin
​Registry
​Request
​Response
​Route
​Router
​Session
​Exception
YAF sequence
[behaviour]
default_allow_access = 1
redirect_to_url = /login
[levels]
guest = 0
user = 1
admin = 9
[rules]
Index.index = guest
Login.index = guest
Login.register = guest
Login.remember = guest
Logout.index = user
Wishes.* = user
YAF Config, Plugin, Bootstrap
class ACLPlugin extends Yaf_Plugin_Abstract
{
public function routerShutdown(/* … */)
{
$this->behaviour = new Yaf_Config_Ini("conf/acl.ini", 'behaviour');
/* … */
}
}
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugins(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new ACLPlugin);
}
}
YAF + PHPStorm
https://github.com/suin/phpstorm-yaf-doc
Phalcon
Phalcon - это веб фреймворк, реализованный в виде
написанного на C PHP расширения, который
характеризуется высокой производительностью при
меньшем потреблении ресурсов.
Замеры
http://docs.phalconphp.com/ru/latest/reference/benchmark/hello-world.htm
Phalcon - MVC
● Одно-модульные
● Мульти-модульные
● Микро приложения
single/
app/
controllers/
models/
views/
public/
css/
img/
js/
multiple/
apps/
frontend/
controllers/
models/
views/
Module.php
backend/
controllers/
models/
views/
Module.php
public/
css/
img/
js/
Phalcon - ORM
Транзакции
Поведения
Отношения
PHQL
События
Валидация
Hydration
Логирование
Профилирование
Шардинг
Phalcon
ODM для Mongo
Шаблонизатор (Volt)
DI/IOC
Менеджер событий
Шифрование
HTTP Request / HTTP Response / Cookies
Phalcon
Контекстное экранирование / Фильтрация
Конструктор форм / Валидация
Информационные сообщения
Кэш
Постраничная навигация
Аннотации
Phalcon
Безопасность
Интернационализация
Управление ресурсами
Универсальный загрузчик классов
Логирование
CLI
Phalcon - аннотации
@Annotation-Name[(param1, param2, ...)]
/**
* Передача хеша в качестве параметра
* @SomeAnnotation({first=1, second=2, third=3})
* Вложенные массивы/хеши
* @SomeAnnotation({"name"="SomeName", "other"={
* "foo1": "bar1", "foo2": "bar2", {1, 2, 3},
* }})
* Вложенные аннотации
*
* @SomeAnnotation(first=@AnotherAnnotation(1, 2, 3))
*/
$reader = new PhalconAnnotationsAdapterMemory();
// Отразить аннотации в классе Example
$reflector = $reader->get('Example');
// Прочесть аннотации в блоке документации класса
$annotations = $reflector->getClassAnnotations();
foreach ($annotations as $annotation) {
echo $annotation->getName(), PHP_EOL;
echo $annotation->numberArguments(), PHP_EOL;
print_r($annotation->getArguments());
}
Memory, Files, APC, XCache
PhalconAnnotationsAdapterInterface
Phalcon - Developer Tools
получения списка имеющихся команд: phalcon commands
создание скелета проекта на Phalcon: phalcon create-project <name>
создание контроллеров: phalcon create-controller --name <name>
создание моделей: phalcon create-model –get-set --table-name <name>
Scaffolding
Webtools
Интеграция в PhpStorm IDE или другим редактором
Zephir
Язык высокого уровня, что-то среднее между C и PHP.
Динамическая и статическая типизация.
По умолчанию - динамическая.
Zephir - статическая типизация
namespace Test;
class MyTest extends
SomeNamespaceMyAnotherClass
{
public function someMethod(int a, int b)
{
let a = 5, b = 10;
return a + b;
}
}
Поддерживаемые типы:
● long/int
● double/float
● bool
● string
Компилятор управляет выделением
и освобождением памяти для
переменных любого типа.
namespace Test;
class MyTest
{
public function someMethod()
{
var fruits;
int i = 0, length;
let myArray = ["hello", 0, 100.25, false, null];
let length = count(myArray);
while i < length {
echo typeof myArray[i], "n";
let i++;
}
return fruits;
}
}
Переменные должны быть объявлены
Доступны PHP типы
Доступны PHP функции и классы
Работа с PHP потоками и проч.
Чем Zephir НЕ станет
Очередным супер крутым языком для web
Заменой для PHP, C и т.д.
Поддержкой для всевозможных парадигм
Zephir не сделает счастливыми всех.
Эта пони знает о скорости всё и не задаёт вопросов.
А ты?

More Related Content

PPTX
Микрофреймворки PHP
PDF
Zend framework 2
ODP
ZFConf 2010: Zend Framework and Doctrine
PPTX
Automation Flex Applications with Selenium rc
PPTX
Symfony(keremet research)
PPTX
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
PDF
7 кашкута
PPTX
CodeFest 2014. Christopher Bennage — CQRS Journey: scalable, available, and m...
Микрофреймворки PHP
Zend framework 2
ZFConf 2010: Zend Framework and Doctrine
Automation Flex Applications with Selenium rc
Symfony(keremet research)
Основные кейсы использования in-memory СУБД на примере Тарантула и проектов M...
7 кашкута
CodeFest 2014. Christopher Bennage — CQRS Journey: scalable, available, and m...

Viewers also liked (20)

PPTX
Maurice de Beijer
PPT
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
PDF
Php intro rus
PDF
Fp intro scala
PDF
Здравый смысл, брендинг, веб и как всё это связано
PPTX
Демоны на PHP (Денис Глазков)
PDF
Лучший frontend-фреймворк, и почему вы его не хотите
PDF
Scala: что, как и зачем?
PDF
Чего стоит сделать стартап
PPTX
Денис Иванов
PPTX
Антон Турецкий
PPTX
Мониторинг приложений ASP.NET на основе сервиса Application Insights
PPTX
Рост курса валют vs рост числа пользователей. Как banki.ru пережил утроение н...
PDF
Внутри Stack Overflow
PDF
Дмитрий Стогов
PPTX
Backend: Полнотекстовый поиск в Почте Mail.Ru
PPT
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
PDF
Frontend: Путешествие в мир модульных загрузчиков
PDF
Thomas Lobinger
PDF
Ставка на iBeacon. Новинки мобильной индустрии в реальной жизни
Maurice de Beijer
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
Php intro rus
Fp intro scala
Здравый смысл, брендинг, веб и как всё это связано
Демоны на PHP (Денис Глазков)
Лучший frontend-фреймворк, и почему вы его не хотите
Scala: что, как и зачем?
Чего стоит сделать стартап
Денис Иванов
Антон Турецкий
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Рост курса валют vs рост числа пользователей. Как banki.ru пережил утроение н...
Внутри Stack Overflow
Дмитрий Стогов
Backend: Полнотекстовый поиск в Почте Mail.Ru
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
Frontend: Путешествие в мир модульных загрузчиков
Thomas Lobinger
Ставка на iBeacon. Новинки мобильной индустрии в реальной жизни
Ad

Similar to 2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить. (20)

PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
PPTX
Александр Трищенко: Phalcon framework
PDF
Phalcon. Что нового?
PDF
Phalcon - самый быстрый PHP Framework
PPTX
Php and frameworks
PDF
Роман Еникеев - PHP или откуда взялся слон
PPTX
Переход на Php 7 и итоги
PPTX
Язык программирования PHP
PDF
Сладкое будущее: Phalcon и Zephir
PPT
The basic design of the PHP language
PDF
Виталий Каторгин, Wamba
PDF
Релиз PHP7 - что нас ждет в октябре 2015
PDF
Чуть сложнее чем Singleton: аннотации, IOC, АОП
PPTX
Base php 1
PPTX
Base php 1
PPTX
Base php 1
PPT
Использование Symfony
PDF
Микрофреймворки на PHP (Андрей Синицын)
PDF
Ф'Yii'лософия
PPTX
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
Александр Трищенко: Phalcon framework
Phalcon. Что нового?
Phalcon - самый быстрый PHP Framework
Php and frameworks
Роман Еникеев - PHP или откуда взялся слон
Переход на Php 7 и итоги
Язык программирования PHP
Сладкое будущее: Phalcon и Zephir
The basic design of the PHP language
Виталий Каторгин, Wamba
Релиз PHP7 - что нас ждет в октябре 2015
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Base php 1
Base php 1
Base php 1
Использование Symfony
Микрофреймворки на PHP (Андрей Синицын)
Ф'Yii'лософия
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Ad

More from Омские ИТ-субботники (20)

PDF
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
PDF
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
PDF
2017-05-06 02 Илья Сиганов. Зачем учить машины?
PDF
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
PDF
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
PDF
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
PDF
2017-02-04 02 Яков Лило. Решение задач
PDF
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
PDF
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
PDF
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
PDF
2016-12-03 03 Евгений Тюменцев. DSL на коленке
PDF
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
PDF
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
PDF
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
PDF
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
PDF
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
PDF
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
PDF
2016-09-17 03 Василий Полозов. WebRTC
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-09-17 03 Василий Полозов. WebRTC

2014-04-04 03 Александр Курочкин. PHP. Ускорение, о котором нет смысла спорить.