- PVSM.RU - https://www.pvsm.ru -

Как я Symfony2 c Vagrant подружил

Недовно я познакомился с инструментом для создания виртуального окружения Vagrant, который я использую для веб разработки и очень рад этому. Но не все так радостно c реализизацией в этом окружении Symfony2 проекта. А именно, проблема в медленности загрузки (генерации) страницы! Итак возникла задача увеличить быстродействие, так как время загрузки страницы более 10-ти секунд ну вовсе не ахти.

У кого возникла такая же проблема, или кому просто интересно прошу под кат.

Походив по просторам интернета я нашел замечательную статью [1] о том как влияет обновления кеша и логов в Symfony2 проекте на быстродействие. Автор с помощью XHProf [2] нашол «узкие места» и описав все детали пришел к выводу, что обновление кеша и логов в общедоступной (shared) директории приводит к проблеме медленной генерации страницы и решением этой проблемы будет переопределение этих директорий путем переноса их с shared в какую либо другую в виртуальной ОС. А именно вот так:

<?php

class AppKernel extends Kernel
{
    // ...

    public function getCacheDir()
    {
        if (in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/appname/cache/' .  $this->environment;
        }

        return parent::getCacheDir();
    }

    public function getLogDir()
    {
        if (in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/appname/logs';
        }

        return parent::getLogDir();
    }
}

Проделав это я скоротил время загрузки страницы но оно все еще осталось велико. Ответ сервера уже был короче, но загрузка файлов активов (asset files) занимала около 7-9 сек., поэтому я воспользовался еще одним советом из выше вышеупомянутой статьи и запустил команду автоматической генерации и регенерации asset-ов:

$ php app/console assetic:dump --watch

перед этим отключив их автоматическое обновления при каждом запросе:

# app/config/config_dev.yml
assetic:
    use_controller: false 

Детальнее об этом можно посмотреть вот здесь Dumping Asset Files in the dev environment [3]

В результате, после проведения всего двух несложных действий я сумел ускорить время загрузки страниц с более 10-ти до менее 1-й секунд в зависимости от конретной страницы, что соответственно позволило мне повысить время на разработку и дебагинг в виртуальном окружение Vagrant.

Автор: r0ma

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/symfony/55148

Ссылки в тексте:

[1] статью: http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html

[2] XHProf: https://github.com/facebook/xhprof

[3] Dumping Asset Files in the dev environment: http://symfony.com/doc/2.3/cookbook/assetic/asset_management.html#dumping-asset-files-in-the-dev-environment

[4] Источник: http://habrahabr.ru/post/212663/