【发布时间】:2012-05-28 04:31:24
【问题描述】:
有没有办法将 symfony 2 缓存(应用程序/缓存)存储在文件系统之外的其他地方? Memcache、S3 还是什么?任何内置选项?
【问题讨论】:
有没有办法将 symfony 2 缓存(应用程序/缓存)存储在文件系统之外的其他地方? Memcache、S3 还是什么?任何内置选项?
【问题讨论】:
您只能通过重载 AppKernel 类中的 getCacheDir() 方法将其移出项目目录。
将其移至 Memcache 有什么意义?这个目录的内容大部分时间是“编译”的类和模板。这些文件无论如何都会被放入内存中(APC 会这样做)。
编辑:在开发中,很难避免 I/O,但您可以通过覆盖 AppKernel 的 getCacheDir() 和 getLogDir() 方法将它们指向 @987654324 轻松地将 Symfony 的缓存目录移动到内存@:
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
【讨论】:
您可以使用 Gaufrette(https://github.com/KnpLabs/Gaufrette、https://github.com/KnpLabs/KnpGaufretteBundle)从几乎任何可能的存储(APC、内存、S3、FTP、SQL db)创建虚拟文件系统。然后将 cache-dir 设置为 gaufrette://s3 例如。
【讨论】: