Вопрос по symfony – Хранить кеш Symfony 2 еще было?

3

Есть ли способ хранить кэш Symfony 2 (приложение / кеш) где-нибудь еще, кроме файловой системы? Memcache, S3 или что-то еще? Любой встроенный вариант?

Ваш Ответ

2   ответа
6

Вы можете переместить его только за пределы каталога проекта, перегрузив метод getCacheDir () в классе AppKernel.

Какой смысл переносить его в Memcache? Содержимое этого каталога большую часть времени «компилируется» классы и шаблоны. Эти файлы в любом случае помещаются в память (это делает APC).

EditВо время разработки труднее избежать ввода-вывода, но вы можете легко переместить каталог кэша Symfony в память, переопределив AppKernel.getCacheDir() а такжеgetLogDir() методы, чтобы указать им/dev/shm:

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();
    }
}

Источник:http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html

Нет, на prod у вас должен быть отключен apc.stat, чтобы избежать проверок времени модификации.
Поскольку APC кэширует ваши файлы в памяти, ввода / вывода нет (ну, только в первый раз). В любом случае, это все равно что пытаться поместить все ваши файлы PHP soure в Memcached, S3, что угодно ...
Дело в том, чтобы устранить ввод / вывод. vinnylinux
APC кэширует код операции, но он все еще не ударил по каждому файлу, чтобы проверить времена модификации, если они были изменены? Может быть какое-то значение в указании директории кеша на / dev / shm, чтобы они хранились на виртуальном диске даже для этих крошечных операций ввода-вывода. (Я не могу представить, чтобы что-либо из этого имело бы значение в любом практическом смысле ... но, тем не менее, интересная мысль)
@JakubZalas Распределенный кеш также может быть здесь полезен. Если вы используете несколько веб-серверов
0

Вы можете использовать Gaufrette (https://github.com/KnpLabs/Gaufrette, https://github.com/KnpLabs/KnpGaufretteBundle) создать виртуальную файловую систему практически из любого хранилища (APC, память, S3, FTP, SQL db). Затем установите cache-dir вgaufrette://s3 например.

Gaufrette не позволит вам хранить кэш Symfony в памяти.

Похожие вопросы