1000 миллисекунд из жизни magento
TRANSCRIPT
1000 миллисекунд из жизни Magento
Евгений Ивашин,разработчик Magento Core
Представьте себя на месте Magento• Представьте себе что вас зовут Magento, вы весите
около 60 мегабайт и состоите из более чем 320 тысяч строк кода.
Представьте себя на месте Magento• Представьте, что одни ваши знакомые хотят, чтобы вы
весили меньше, другие – чтобы вы бегали как спринтер, третьи – чтобы вы были способны сделать сальто и встать на мостик без усилий.
Представьте себя на месте Magento• Представьте, что окружающие никогда не довольны
вашими успехами, нагружают вас дополнительными упражнениями и в то же время не прекращают требовать от вас быть еще гибче и еще быстрее.
Представьте себя на месте Magento
Представили? А теперь представьте, что вы должны быть готовы:
• обслуживать тысячи клиентов в час
• никому не отказывать в помощи
• никого не заставлять ждать
Тук-тук (0.000 ms)Пользователь набрал в браузере
http://my.magento.installation.com/customer/account/login
Веб-сервер все запросы переадресовывает на index.php
Запуск основного цикла Magento (0.005 ms)Пользователь набрал в браузере
http://my.magento.installation.com/customer/account/login
Веб-сервер все запросы переадресовывает на index.php
Mage::run()
Экскурсия по фабрике
::getModel()
::getSingleton() ::app()
::getBaseUrl() ::getConfig() ::register()
::getStoreConfig()
::helper()
::registry()
::getResourceModel()
::getBaseDir()
::getUrl()
Инициализация приложения (0.020 ms)Пользователь набрал в браузере
http://my.magento.installation.com/customer/account/login
Веб-сервер все запросы переадресовывает на index.php
Mage::run()
Инициализация класса приложения Mage_Core_Model_App
Запуск основного цикла приложения (0.038 ms)
Mage::run()
Инициализация класса приложения Mage_Core_Model_App
...
Запускается основной цикл приложения Mage::app()->run()
Загрузка базовой конфигурации (0.123 ms)
Mage::run()
Инициализация класса приложения Mage_Core_Model_App
...
Запускается основной цикл приложения Mage::app()->run()
Загрузка базовой конфигурации из app/etc
Загрузка базовой конфигурации
System Configuration
app/etc/*.xml
1
Инициализация модулей (0.175 ms)
Инициализация класса приложения Mage_Core_Model_App
...
Запускается основной цикл приложения Mage::app()->run()
Загрузка базовой конфигурации из app/etc
Инициализация каждого модуля из app/etc/modules
Module 1 Module 2 Module 3 Module N ...
Инициализация модулей
System Configuration
app/etc/*.xml
1
app/etc/modules/*.xml
2
app/<Module 1 path>/etc/*.xml
3
app/<Module 2 path>/etc/*.xml
4
app/<Module N path>/etc/*.xml
N app/etc/local.xml
N+1…
Запуск цикла диспетчеризации (0.591 ms)
Запускается основной цикл приложения Mage::app()->run()
...
Загрузка базовой конфигурации из app/etc
Инциализация Front Controller и запуск его цикла диспетчеризации
Инициализация каждого модуля из app/etc/modules
Module 1 Module 2 Module 3 Module N ...
Попытка сопоставить роутер с URL (0.613 ms)
Перебор всех сконфигурированных роутеров
...
Инциализация Front Controller и запуск его цикла диспетчеризации
Инициализация каждого модуля из app/etc/modules
Module 1 Module 2 Module 3 Module N ...
Router 1 Router 2 Router 3 Router N ...
Вычисление и запуск action (0.620 ms)
Перебор всех сконфигурированных роутеров
...Инциализация Front Controller и запуск его цикла диспетчеризации
Вычисление Action Controller и Action, запуск $actionController->actionAction()
Router 1 Router 2 Router 3 Router N ...
Анатомия контроллера
Загрузка Layout$this->loadLayout();
Обработка входных параметров из Request
Работа с отдельными блоками в Layout
Отрисовка Layout$this->renderLayout();
Обновления Layout
Генерация блоков
Рендеринг (~1.000 ms)
The
End