PHP + Erlang ускоряем checkout
Checkout – оформление заказа Screenshot Onepage checkout server Ajax request Next step HTML Database
Erlang – язык программирования Функциональный Старый (1987 год), но до сих пор активно развивающийся (последний релиз – апрель 2012) Создавать много легковесных процессов Транслируется в байт-код и запускается виртуальной машиной
Многопоточность PHP и так для каждого HTTP запроса создает новый поток Чрезмерная многопоточность усложняет программу Хотя, кое где многопоточность нужна
Демонизация PHP load save Request 1 Response 1 load save Request 2 Response 2 load save Request 3 Response 3 Process #1 Process #2 Process #3 Web (PHP) application load save Request 1 Request 2 Request 3 Response 1 Response 2 Response 3 Process #1 Daemon
Инфраструктура Front script Erlang manager PHP node 1.Упаковывает Request 2.Отсылает его в Erlang Manager 3.Получает и распаковывает Response Создает новый или передает управление в существующий процесс Неподходящие запросы выполняются как обычно 1.Распаковывает Request 2.Обрабатывает его 3.Упаковывает и отсылает обратно Response Magento user 1 user 2user 3 user 4 user 5 user 1 user 2user 3 user 4user 5
Пример кода front script
Пример кода PHP node
Как работает checkout load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote create and save order load Quote collect totals save Quote create and save order MySQL database MySQL database Checkout steps Quote process step 1 step 2 step 3 step 4
load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote load Quote collect totals save Quote create and save order load Quote collect totals save Quote create and save order MySQL database MySQL database Quote process Checkout steps step 1 step 2 step 3 step 4 Как работает checkout
Ресурсы PHP eval сервер для erlang - PHP расширение для запуска Php, как erlang cnode -
Q&AQ&A Руслан Грабовой Саша Кусакин