4

有没有办法将 symfony 2 缓存(应用程序/缓存)存储在文件系统以外的其他地方?Memcache、S3 还是什么?任何内置选项?

4

2 回答 2

7

您只能通过重载 AppKernel 类中的 getCacheDir() 方法将其移出项目目录。

将其移至 Memcache 有什么意义?这个目录的内容大部分时间是“编译”的类和模板。无论如何,这些文件都会被放入内存(APC 会这样做)。

编辑:在开发中,很难避免 I/O,但是您可以通过覆盖 AppKernelgetCacheDir()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

于 2012-05-28T12:18:58.227 回答
0

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

于 2013-12-26T18:46:59.713 回答