SlideShare a Scribd company logo
Pavel Ruban
Hardware, software engineer at I20
High loaded php operations over web interface.
Вопросы о которых далее пойдет доклад:
● О чем речь?
● Зачем это нужно?
● Какие есть проблемы реализации такого решения ?
● Почему php?
● Как это работает?
● Есть ли реальные примеры реализации этого?
Данная тема раскрывает способы решения задач связанных с
необходимостью предоставления интерфейса пользователю из вэба для
управления долгими здачами, которые выполняет сервер. Как правило
время таких задач может достигать минуты и более.
О чем речь?
● предоставить обратную связь пользователю, сигнализирующую о
завершении операции без необходимости перезагружать страницу.
● иметь возможность создать удобный, отзывчивый интерфейс
пользователя без оглядки на время которое нужно для завершения
операции сервером.
● уметь делать это внутри Drupal системы без потери трудочасов на
заботу о данных окружения и их инициализации, которые необходимы
для корректной работы подсистемы Drupal’а
Зачем это нужно?
● timeout сервера и timeout времени работы скрипта.
● протокол http не позволяет серверу отвечать клиенту без запроса.
● операция не должна блокировать работу пользователя.
● нужно сохранять контекст Drupal’а при использовании его
функционала.
Какие есть проблемы при реализации?
Почему PHP?
● Поддержка существующих крупных проектов, где весь функционал
обычно разрабатывается в контексте языка программирования php.
● На хостинге нет возможности установить необходимый софт для
решения другими способами этой проблемы (например сервер
поддерживающий протокол websocket и т.д.)
● Вопрос цены - дополнительные услуги как правило стоят денег и если
проблему можно решить проще с тем же качеством, то в
долговременной перспективе повышение ежемесячной платы
неоправданно.
Как это работает?
1. Запрос на сервер, php клонирует процесс (fork() Linux API).
2. Parent процесс моментально отвечает клиенту
3. Child процесс после завершения parent процесса становится
самостоятельным процессом, а также имеет CLI контекст.
4. Клиент переодически опрашивает сервер о готовности работы.
5. При завершении child помечает работу выполненной и записывает
свой результат в доступное для другого php процесса место.
6. Клиент (js скрипт) получает сигнал о готовности и отдает результат в
удобном виде конечному пользователю.
Fork
● Созданный процесс имеет те
же самые переменные и
окружение что и
родительский процесс.
● Новый процес создается
программно, поэтому
находится в CLI окружение
где другие настройки
сервера по timeout’у.
Решенные проблемы:
а) timeout б) Drupal контекст
в) блокировка пользователя
Js polling ● Клиент переодически
опрашивает сервер, как
только работа будет готова,
сервер вернет результат
● JS (браузер) сможет вернуть
ответ в удобном виде
конечному пользователю.
Решенные проблемы:
а) Обратная связь
б) http протокол (деньги)
Система годовых отчетов, с множеством фильтров и динамическим
расчетом данных из браузера. CSV файлы размером более 20 мегабайт.
Примеры реализации данной техники
Contact
Pavel Ruban I20
pavelruban@mail.com
Пример с кодом на сайте:
www.pavelruban.org

More Related Content

What's hot

параллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияпараллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияAlexey Vidanov
 
Pconnect: граната в руках обезьяны (Сергей Аверин)
Pconnect: граната в руках обезьяны (Сергей Аверин)Pconnect: граната в руках обезьяны (Сергей Аверин)
Pconnect: граната в руках обезьяны (Сергей Аверин)Ontico
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Oleg Poludnenko
 
A new way to compile
A new way to compileA new way to compile
A new way to compile
Sergey Karashevich
 
Ускорение фронтенда ponominalu.ru
Ускорение фронтенда ponominalu.ruУскорение фронтенда ponominalu.ru
Ускорение фронтенда ponominalu.ru
Денис Сергеевич Басковский
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
it-people
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
Peri Innovations
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
GetDev.NET
 
UDP Multicast и интеграция с SIP
UDP Multicast и интеграция с SIPUDP Multicast и интеграция с SIP
UDP Multicast и интеграция с SIPTrueConf
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
MoscowJS
 
Кораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограниченийКораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограничений
Anton Nepomnyaschih
 
Сокращение времени регрессионного тестирования
Сокращение времени регрессионного тестированияСокращение времени регрессионного тестирования
Сокращение времени регрессионного тестирования
SQALab
 
Лицензирование TrueConf Server
Лицензирование TrueConf ServerЛицензирование TrueConf Server
Лицензирование TrueConf ServerTrueConf
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QAFest
 
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
it-people
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
 
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]
Eugene Chekan
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
CodeFest
 

What's hot (20)

параллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерыванияпараллельная загрузка Java script и css файлов без прерывания
параллельная загрузка Java script и css файлов без прерывания
 
Pconnect: граната в руках обезьяны (Сергей Аверин)
Pconnect: граната в руках обезьяны (Сергей Аверин)Pconnect: граната в руках обезьяны (Сергей Аверин)
Pconnect: граната в руках обезьяны (Сергей Аверин)
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 
A new way to compile
A new way to compileA new way to compile
A new way to compile
 
Ускорение фронтенда ponominalu.ru
Ускорение фронтенда ponominalu.ruУскорение фронтенда ponominalu.ru
Ускорение фронтенда ponominalu.ru
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
UDP Multicast и интеграция с SIP
UDP Multicast и интеграция с SIPUDP Multicast и интеграция с SIP
UDP Multicast и интеграция с SIP
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
 
Кораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограниченийКораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограничений
 
Сокращение времени регрессионного тестирования
Сокращение времени регрессионного тестированияСокращение времени регрессионного тестирования
Сокращение времени регрессионного тестирования
 
Лицензирование TrueConf Server
Лицензирование TrueConf ServerЛицензирование TrueConf Server
Лицензирование TrueConf Server
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
 
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 

Viewers also liked

Yaroslav Lushnikov. Drupal cache
Yaroslav Lushnikov. Drupal cacheYaroslav Lushnikov. Drupal cache
Yaroslav Lushnikov. Drupal cache
i20 Group
 
Pavel Prischepa. Wodby
Pavel Prischepa. WodbyPavel Prischepa. Wodby
Pavel Prischepa. Wodby
i20 Group
 
Sergey Сherebedov. Node.js+Drupal
Sergey Сherebedov. Node.js+DrupalSergey Сherebedov. Node.js+Drupal
Sergey Сherebedov. Node.js+Drupal
i20 Group
 
Namzhilma Zhambalova. Ajax pane. lazy pane.
Namzhilma Zhambalova. Ajax pane. lazy pane.Namzhilma Zhambalova. Ajax pane. lazy pane.
Namzhilma Zhambalova. Ajax pane. lazy pane.
i20 Group
 
Anton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platformAnton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platform
i20 Group
 
Grigoriy Shlyapkin. Drupal. First steps
Grigoriy Shlyapkin. Drupal. First stepsGrigoriy Shlyapkin. Drupal. First steps
Grigoriy Shlyapkin. Drupal. First steps
i20 Group
 
Artem Kovalevich. Drupal. Getting Started.
Artem Kovalevich. Drupal. Getting Started.Artem Kovalevich. Drupal. Getting Started.
Artem Kovalevich. Drupal. Getting Started.
i20 Group
 
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегментеРогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
i20 Group
 
Павел Прищепа. Drupal как стандарт для образовательных учреждений
Павел Прищепа. Drupal как стандарт для образовательных учрежденийПавел Прищепа. Drupal как стандарт для образовательных учреждений
Павел Прищепа. Drupal как стандарт для образовательных учреждений
i20 Group
 
Namzhilma Zhambalova. Moderation
Namzhilma Zhambalova. ModerationNamzhilma Zhambalova. Moderation
Namzhilma Zhambalova. Moderation
i20 Group
 
Artem Zigar. Development Tools. Readability of a code
Artem Zigar. Development Tools. Readability of a codeArtem Zigar. Development Tools. Readability of a code
Artem Zigar. Development Tools. Readability of a code
i20 Group
 
Alexander Taranov. Right slicing for drupal = painless teming
Alexander Taranov. Right slicing for drupal = painless temingAlexander Taranov. Right slicing for drupal = painless teming
Alexander Taranov. Right slicing for drupal = painless temingi20 Group
 
Журавлёв Артем. Современные инструменты отдела продаж
Журавлёв Артем. Современные инструменты отдела продажЖуравлёв Артем. Современные инструменты отдела продаж
Журавлёв Артем. Современные инструменты отдела продаж
i20 Group
 
Chingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualizationChingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualization
i20 Group
 
Виджет amoCRM. Инструкция
Виджет amoCRM. ИнструкцияВиджет amoCRM. Инструкция
Виджет amoCRM. Инструкция
i20 Group
 
Александр Воинов. Power of Drupal market
Александр Воинов. Power of Drupal marketАлександр Воинов. Power of Drupal market
Александр Воинов. Power of Drupal market
i20 Group
 
Olesya Prokopenko.FlexBox. Future of the slicing
Olesya Prokopenko.FlexBox. Future of the slicingOlesya Prokopenko.FlexBox. Future of the slicing
Olesya Prokopenko.FlexBox. Future of the slicing
i20 Group
 

Viewers also liked (17)

Yaroslav Lushnikov. Drupal cache
Yaroslav Lushnikov. Drupal cacheYaroslav Lushnikov. Drupal cache
Yaroslav Lushnikov. Drupal cache
 
Pavel Prischepa. Wodby
Pavel Prischepa. WodbyPavel Prischepa. Wodby
Pavel Prischepa. Wodby
 
Sergey Сherebedov. Node.js+Drupal
Sergey Сherebedov. Node.js+DrupalSergey Сherebedov. Node.js+Drupal
Sergey Сherebedov. Node.js+Drupal
 
Namzhilma Zhambalova. Ajax pane. lazy pane.
Namzhilma Zhambalova. Ajax pane. lazy pane.Namzhilma Zhambalova. Ajax pane. lazy pane.
Namzhilma Zhambalova. Ajax pane. lazy pane.
 
Anton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platformAnton Shloma. Drupal as an integration platform
Anton Shloma. Drupal as an integration platform
 
Grigoriy Shlyapkin. Drupal. First steps
Grigoriy Shlyapkin. Drupal. First stepsGrigoriy Shlyapkin. Drupal. First steps
Grigoriy Shlyapkin. Drupal. First steps
 
Artem Kovalevich. Drupal. Getting Started.
Artem Kovalevich. Drupal. Getting Started.Artem Kovalevich. Drupal. Getting Started.
Artem Kovalevich. Drupal. Getting Started.
 
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегментеРогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
Рогаченко Ксения. Инструменты онлайн маркетинга в b2b сегменте
 
Павел Прищепа. Drupal как стандарт для образовательных учреждений
Павел Прищепа. Drupal как стандарт для образовательных учрежденийПавел Прищепа. Drupal как стандарт для образовательных учреждений
Павел Прищепа. Drupal как стандарт для образовательных учреждений
 
Namzhilma Zhambalova. Moderation
Namzhilma Zhambalova. ModerationNamzhilma Zhambalova. Moderation
Namzhilma Zhambalova. Moderation
 
Artem Zigar. Development Tools. Readability of a code
Artem Zigar. Development Tools. Readability of a codeArtem Zigar. Development Tools. Readability of a code
Artem Zigar. Development Tools. Readability of a code
 
Alexander Taranov. Right slicing for drupal = painless teming
Alexander Taranov. Right slicing for drupal = painless temingAlexander Taranov. Right slicing for drupal = painless teming
Alexander Taranov. Right slicing for drupal = painless teming
 
Журавлёв Артем. Современные инструменты отдела продаж
Журавлёв Артем. Современные инструменты отдела продажЖуравлёв Артем. Современные инструменты отдела продаж
Журавлёв Артем. Современные инструменты отдела продаж
 
Chingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualizationChingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualization
 
Виджет amoCRM. Инструкция
Виджет amoCRM. ИнструкцияВиджет amoCRM. Инструкция
Виджет amoCRM. Инструкция
 
Александр Воинов. Power of Drupal market
Александр Воинов. Power of Drupal marketАлександр Воинов. Power of Drupal market
Александр Воинов. Power of Drupal market
 
Olesya Prokopenko.FlexBox. Future of the slicing
Olesya Prokopenko.FlexBox. Future of the slicingOlesya Prokopenko.FlexBox. Future of the slicing
Olesya Prokopenko.FlexBox. Future of the slicing
 

Similar to Pavel Ruban. High loaded PHP operations over web interface

История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Лекции и задания по рнр
Лекции и задания по рнрЛекции и задания по рнр
Лекции и задания по рнр
Rauan Ibraikhan
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
Ontico
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Ontico
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Vadim Martynov
 
Неочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаНеочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайта
Netpeak
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
Alexander Frolov
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
etyumentcev
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
GetDev.NET
 
Jmeter
JmeterJmeter
Jmeter
Elena Korzh
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
Ilya Sergeev
 

Similar to Pavel Ruban. High loaded PHP operations over web interface (20)

Sivko
SivkoSivko
Sivko
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Лекции и задания по рнр
Лекции и задания по рнрЛекции и задания по рнр
Лекции и задания по рнр
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
 
Неочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайтаНеочевидные возможности ускорения работы сайта
Неочевидные возможности ускорения работы сайта
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
 
Log+
Log+Log+
Log+
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Jmeter
JmeterJmeter
Jmeter
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 

More from i20 Group

Александр Войнов. Digital охота
Александр Войнов. Digital охотаАлександр Войнов. Digital охота
Александр Войнов. Digital охота
i20 Group
 
Осипенко Константин. Как привлечь новых клиентов на падающем рынке
Осипенко Константин. Как привлечь новых клиентов на падающем рынкеОсипенко Константин. Как привлечь новых клиентов на падающем рынке
Осипенко Константин. Как привлечь новых клиентов на падающем рынке
i20 Group
 
Горина Екатерина. 4 простых правила дизайна для увеличения конверсии
Горина Екатерина. 4 простых правила дизайна для увеличения конверсииГорина Екатерина. 4 простых правила дизайна для увеличения конверсии
Горина Екатерина. 4 простых правила дизайна для увеличения конверсии
i20 Group
 
Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool? Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?
i20 Group
 
Scrum lego game instructuons
Scrum lego game instructuonsScrum lego game instructuons
Scrum lego game instructuons
i20 Group
 
Mikhail Kraynuk. Form api. Drupal 8
Mikhail Kraynuk. Form api. Drupal 8Mikhail Kraynuk. Form api. Drupal 8
Mikhail Kraynuk. Form api. Drupal 8
i20 Group
 
Sergey Cherebedov. Interesting Drupal Distributions
Sergey Cherebedov. Interesting Drupal DistributionsSergey Cherebedov. Interesting Drupal Distributions
Sergey Cherebedov. Interesting Drupal Distributions
i20 Group
 
Sergey Susikov. Virtualzation. My rakes
Sergey Susikov. Virtualzation. My rakesSergey Susikov. Virtualzation. My rakes
Sergey Susikov. Virtualzation. My rakes
i20 Group
 
Dmitry Kiselev. Super fast api for Drupal
Dmitry Kiselev. Super fast api for DrupalDmitry Kiselev. Super fast api for Drupal
Dmitry Kiselev. Super fast api for Drupal
i20 Group
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tables
i20 Group
 
Руслан Исай. Drupal как оружие в информационной войне.
Руслан Исай. Drupal как оружие в информационной войне.Руслан Исай. Drupal как оружие в информационной войне.
Руслан Исай. Drupal как оружие в информационной войне.i20 Group
 
Чингис Саднанов. Drupal как платформа
Чингис Саднанов. Drupal как платформаЧингис Саднанов. Drupal как платформа
Чингис Саднанов. Drupal как платформа
i20 Group
 
FFFast Drupal backend No kidding!
FFFast Drupal backend No kidding!FFFast Drupal backend No kidding!
FFFast Drupal backend No kidding!
i20 Group
 

More from i20 Group (13)

Александр Войнов. Digital охота
Александр Войнов. Digital охотаАлександр Войнов. Digital охота
Александр Войнов. Digital охота
 
Осипенко Константин. Как привлечь новых клиентов на падающем рынке
Осипенко Константин. Как привлечь новых клиентов на падающем рынкеОсипенко Константин. Как привлечь новых клиентов на падающем рынке
Осипенко Константин. Как привлечь новых клиентов на падающем рынке
 
Горина Екатерина. 4 простых правила дизайна для увеличения конверсии
Горина Екатерина. 4 простых правила дизайна для увеличения конверсииГорина Екатерина. 4 простых правила дизайна для увеличения конверсии
Горина Екатерина. 4 простых правила дизайна для увеличения конверсии
 
Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool? Eugene Ilyin. Why Drupal is cool?
Eugene Ilyin. Why Drupal is cool?
 
Scrum lego game instructuons
Scrum lego game instructuonsScrum lego game instructuons
Scrum lego game instructuons
 
Mikhail Kraynuk. Form api. Drupal 8
Mikhail Kraynuk. Form api. Drupal 8Mikhail Kraynuk. Form api. Drupal 8
Mikhail Kraynuk. Form api. Drupal 8
 
Sergey Cherebedov. Interesting Drupal Distributions
Sergey Cherebedov. Interesting Drupal DistributionsSergey Cherebedov. Interesting Drupal Distributions
Sergey Cherebedov. Interesting Drupal Distributions
 
Sergey Susikov. Virtualzation. My rakes
Sergey Susikov. Virtualzation. My rakesSergey Susikov. Virtualzation. My rakes
Sergey Susikov. Virtualzation. My rakes
 
Dmitry Kiselev. Super fast api for Drupal
Dmitry Kiselev. Super fast api for DrupalDmitry Kiselev. Super fast api for Drupal
Dmitry Kiselev. Super fast api for Drupal
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tables
 
Руслан Исай. Drupal как оружие в информационной войне.
Руслан Исай. Drupal как оружие в информационной войне.Руслан Исай. Drupal как оружие в информационной войне.
Руслан Исай. Drupal как оружие в информационной войне.
 
Чингис Саднанов. Drupal как платформа
Чингис Саднанов. Drupal как платформаЧингис Саднанов. Drupal как платформа
Чингис Саднанов. Drupal как платформа
 
FFFast Drupal backend No kidding!
FFFast Drupal backend No kidding!FFFast Drupal backend No kidding!
FFFast Drupal backend No kidding!
 

Pavel Ruban. High loaded PHP operations over web interface

  • 2. High loaded php operations over web interface. Вопросы о которых далее пойдет доклад: ● О чем речь? ● Зачем это нужно? ● Какие есть проблемы реализации такого решения ? ● Почему php? ● Как это работает? ● Есть ли реальные примеры реализации этого?
  • 3. Данная тема раскрывает способы решения задач связанных с необходимостью предоставления интерфейса пользователю из вэба для управления долгими здачами, которые выполняет сервер. Как правило время таких задач может достигать минуты и более. О чем речь?
  • 4. ● предоставить обратную связь пользователю, сигнализирующую о завершении операции без необходимости перезагружать страницу. ● иметь возможность создать удобный, отзывчивый интерфейс пользователя без оглядки на время которое нужно для завершения операции сервером. ● уметь делать это внутри Drupal системы без потери трудочасов на заботу о данных окружения и их инициализации, которые необходимы для корректной работы подсистемы Drupal’а Зачем это нужно?
  • 5. ● timeout сервера и timeout времени работы скрипта. ● протокол http не позволяет серверу отвечать клиенту без запроса. ● операция не должна блокировать работу пользователя. ● нужно сохранять контекст Drupal’а при использовании его функционала. Какие есть проблемы при реализации?
  • 6. Почему PHP? ● Поддержка существующих крупных проектов, где весь функционал обычно разрабатывается в контексте языка программирования php. ● На хостинге нет возможности установить необходимый софт для решения другими способами этой проблемы (например сервер поддерживающий протокол websocket и т.д.) ● Вопрос цены - дополнительные услуги как правило стоят денег и если проблему можно решить проще с тем же качеством, то в долговременной перспективе повышение ежемесячной платы неоправданно.
  • 7. Как это работает? 1. Запрос на сервер, php клонирует процесс (fork() Linux API). 2. Parent процесс моментально отвечает клиенту 3. Child процесс после завершения parent процесса становится самостоятельным процессом, а также имеет CLI контекст. 4. Клиент переодически опрашивает сервер о готовности работы. 5. При завершении child помечает работу выполненной и записывает свой результат в доступное для другого php процесса место. 6. Клиент (js скрипт) получает сигнал о готовности и отдает результат в удобном виде конечному пользователю.
  • 8. Fork ● Созданный процесс имеет те же самые переменные и окружение что и родительский процесс. ● Новый процес создается программно, поэтому находится в CLI окружение где другие настройки сервера по timeout’у. Решенные проблемы: а) timeout б) Drupal контекст в) блокировка пользователя
  • 9. Js polling ● Клиент переодически опрашивает сервер, как только работа будет готова, сервер вернет результат ● JS (браузер) сможет вернуть ответ в удобном виде конечному пользователю. Решенные проблемы: а) Обратная связь б) http протокол (деньги)
  • 10. Система годовых отчетов, с множеством фильтров и динамическим расчетом данных из браузера. CSV файлы размером более 20 мегабайт. Примеры реализации данной техники
  • 11.
  • 12.
  • 13. Contact Pavel Ruban I20 pavelruban@mail.com Пример с кодом на сайте: www.pavelruban.org