使用本地缓存和Doctrine ORM

时间:2014-11-16 05:25:34

标签: php symfony doctrine-orm silex

我正在与Silex和Doctrine ORM合作。为了使我的数据库查询更快,我想要某种缓存。

我查看了PhpFastCache - 它提供了一个很好的缓存框架 - 但并没有真正与Doctrine集成。关于这一点最好的部分是我可以拥有一个独立于任何外部服务的本地缓存 - 比如memcached。由于我有一个托管在共享主机上的小网站,我不能花钱在云上提供服务。

我还查看了Doctrine ORM的现有缓存提供程序,所有这些都使用外部缓存服务。

我知道我要做的最后一件事就是使用PhpFastCache自己编写一个提供程序,但只是想确保我没有其他可用的替代方法。我今天全天都在线搜索,但我只是想确定一下。

刚才补充一下:我看过APC和Memcache,但是我的网站是共享主机,我需要一个专门的主机来安装APC / Memcache的PECL模块:(。

2 个答案:

答案 0 :(得分:3)

Doctrine包含了一些似乎没有记录的缓存驱动程序。 PhpFastCache没有一个,但有两个将直接缓存到文件系统。查看FilesystemCachePhpFileCache。您可以在存储库中看到full list

如果我不得不猜测,我会说 FilesystemCache 就是你想要的。它将序列化数据存储在普通文件中。 PhpFileCache将其存储为PHP文件,然后使用include稍后读取它。这意味着它必须在读取时由PHP解析,除非您使用像APC这样的PHP字节码缓存,否则这可能会更慢。

这两种解决方案都不会像Memcache那样快,因为它们都是从文件系统而不是内存中读取的,但它们应该为经常运行的慢速数据库查询提供优化。

编辑:正如Kiran Madipally指出的那样,通过扩展CacheProvider应该很容易创建自己的PhpFastCache驱动程序。

答案 1 :(得分:1)

我很快为PhpFastCache写了一个提供程序。我在这里添加了要点:

https://gist.github.com/thephoenics/ee7de9f95bfdf5f6c24f