ZendFramework Как ускорить загрузку ZF3?

Denchik

Новичок
Добрый день! Подскажите, пожалуйста как можно ускорить загрузку Zend Framework 3?
Конкретнее: между вызовом функции run() в index.php и началом фабрики контроллера у меня получается ~50ms. Что ZF3 делает это время и как можно его уменьшить? У меня запросы в БД с полумиллионом записей выполняются раза в 4 быстрее.
засекаю время так -
в index.php:
PHP:
$GLOBALS['t2'] = microtime(true);
// Run the application!
Application::init($appConfig)->run();
в фабрике контроллера:
PHP:
// Класс фабрики
class IndexControllerFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        echo 'В начале фабрики '.(microtime(true) - $GLOBALS['t2']).' s.';
 

Denchik

Новичок
Я ничего не знаю про ZF3, но чтобы выяснить, что делает, можно воспользоваться профилированием в XDebug:
Спасибо, давно хотел попробовать этот хдебуг, видимо час настал. Но вопрос остаётся открым, как можно оптимизировать стартовую загрузку ZF3?
Может это норма для него?
У кого сколько занимает загрузка стартовой станички или время от index.php до старта фабрики контроллера?
Читал за кеширование, но не понял, как им пользоваться в этом случае (стандартное кеширование разрешено, но оно вопрос не решает, наскольколько я понимаю оно просто сцепляет конфиги в один массив). Може кто покажет работающий пример?
 

fixxxer

К.О.
Партнер клуба
Опять же, ничего не знаю про ZF3, но надо сначала выяснить, что тормозит, а потом уже решать. Может это и не ZF3, а какая-нибудь миддлварь в базу лезет на каждый запрос, например. И, да, для начала убедиться, что opcache вообще включен и работает :)

Если же выяснится, что просто весь ZF3 так долго бутстрапится, в php 7.4 (он пока в бете, но релиз скоро) появился preload: https://stitcher.io/blog/preloading-in-php-74
 

Denchik

Новичок
Вы знаете, как почувствовали, начинал без него (хостер только на днях дал разрешение на подключение некоторых доп. модулей). 3 дня назад подключил opcache, вроде как стала быстрее эта фаза и в общем явное улучшение. Сейчас собираю статистику. От 7мсек до трети-половины времени явное ускорение.
1408
Спасибо за статью, пошёл курить
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Еще возможно, composer dump-autoload --optimize-autoloader стоит делать и посмотреть
 

fixxxer

К.О.
Партнер клуба
Шаред хостинг? А, ну-ну. С вероятностью 90% проблема не в ZF3, а в хостере.
 

Denchik

Новичок
Еще возможно, composer dump-autoload --optimize-autoloader стоит делать и посмотреть
обязательно, попробую. Я думал, что за это отвечает строчка
Код:
// Composer autoloading Автозагрузка Composer
include __DIR__ . '/../vendor/autoload.php';
в index.php, а она у меня занимает ~7мсек, по-этому сначала на это дело внимания не обращал.
Еще увидел такую комманду:
composer install --no-dev --prefer-dist --no-scripts --optimize-autoloader --apcu-autoloader --quiet
 

Denchik

Новичок
Шаред хостинг? А, ну-ну. С вероятностью 90% проблема не в ZF3, а в хостере.
Как раскручюсь - попробую сделать зеркало на VPS, а пока хочу оптимизировать по максимуму хостинг. Не пинайте сильно, я же начинающий. Если б знал, вопросов бы не задавал.
 

fixxxer

К.О.
Партнер клуба
Да а чего ждать? Купон на $100 для DigitalOcean гуглится за 5 секунд, этого хватит на полгода экспериментов.
Шаред хостинг - штука непредсказуемая абсолютно, там бесполезно что-либо измерять, это покажет среднюю температуру по больнице.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
5 долларов в месяц за VPS - это меньше, чем оплата электричества за работу компьютера разработчика сайта, а если их нет - можно настроить динамический DNS, и раздавать сайт с домашнего компьютера, как я делал лет 15 назад, когда VPS не было
 

Denchik

Новичок
Дело не в 5$. Просто так исторически сложилось, что проектик уже работает, а перенос, подразумевает под собой время простоя, которое больно ударит по авторитету. По этому мне надо делать параллельное зеркало по идее, а щас на это времени катастрофически нет, возможно с конца месяца займусь
 
Сверху