Я создал базовое приложение Yii2 https://www.yiiframework.com/doc/guide/2.0/en/start-installation, но время ожидания index.php (TTFB) всегда составляет около 2 с, не менее, время загрузки составляет около 43 мс, а все остальные ресурсы приложения по умолчанию (CSS, JS) ) загружаются за 10 мс (все, как видно из инструментов разработчика Google), это нормально. Я запускаю все на своей машине для разработки Windows 10 4 ГГц, 16 ГБ ОЗУ, низкое потребление ресурсов.
Я добавляю результаты профилирования xDebug для вызова index.php: Результаты, упорядоченные по Incl. и Результаты, упорядоченные по Self .
Можно заметить, что не существует ни одной медленной функции PHP, хотя показано, что 50% собственного времени расходуется на php::fclose
мои эксперименты показывают, что комментирование этих двух строк лишь незначительно улучшает ситуацию. Так что - довольно сложно положиться на профилирование xDebug.
Я также экспериментировал с комментированием или изменением настроек отладки, но такие действия также не дают улучшений.
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
2 секунды - это очень большое время отклика для приложения без какой-либо функциональности и запуска на локальной машине с большим количеством ресурсов. У нас есть опыт, что довольно сложные приложения Yii отвечают менее чем за 0,5 секунды, и это нормально, но 2 секунды - это недопустимое время.
Я использую XAMP, PHP 7+, Yii 2.0.14, есть проблема, поданная https://github.com/yiisoft/yii2/issues/15776, которая, в частности, 2.0.14 может быть медленнее, но проблема не подтверждена, насколько я понимаю.
Я опустил этот же проект до Yii 2.0.5 и попробовал его под XAMPP с PHP 5.6.23, и производительность отличная. Весь запрос index.php выполняется за 100 мс (в Yii 2.0.14 / PHP 7+ это заняло более 2 с).
Еще один вывод - базовое приложение Yii 2.0.13 быстро работает под XAMPP PHP 5.6, но это же приложение возвращает страницу после более чем 2 секунд под XAMPP PHP 7.2. Так что, возможно, проблемы с производительностью связаны не с Yii2.
Как поступить? Какое еще профилирование делать? Какие еще настройки нужно изменить?