在其他地方存储Symfony2缓存?

时间:2012-05-28 04:31:25

标签: caching symfony

有没有办法将symfony 2缓存(app / cache)存储在除文件系统之外的其他地方? Memcache,S3还是什么?任何内置选项?

2 个答案:

答案 0 :(得分:6)

您只能通过在AppKernel类中重载getCacheDir()方法将其移到项目目录之外。

将它移到Memcache有什么意义?此目录的内容大多数时候是“已编译”的类和模板。无论如何,这些文件都会被放入内存中(APC会这样做)。

编辑:在开发时,很难避免I / O,但您可以通过覆盖AppKernel的getCacheDir()getLogDir()方法轻松地将Symfony的缓存目录移动到内存中他们到/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

答案 1 :(得分:0)

您可以使用Gaufrette(https://github.com/KnpLabs/Gaufrettehttps://github.com/KnpLabs/KnpGaufretteBundle)从几乎任何可能的存储(APC,内存,S3,FTP,SQL db)创建虚拟文件系统。然后将cache-dir设置为gaufrette://s3,例如。