如何将 ZendOpCache 用于 Doctrine2 缓存?
Posted
技术标签:
【中文标题】如何将 ZendOpCache 用于 Doctrine2 缓存?【英文标题】:How to use ZendOpCache for Doctrine2 cache? 【发布时间】:2013-08-04 18:40:07 【问题描述】:我已经在我的开发环境中安装了 php 5.5.1,并且还配置了 Zend OpCache 作为缓存提供程序。一切都在使用新版本和设置的服务器上运行,但在我的 symfony 2 项目中,我有 Doctine2 缓存来存储一些“静态”数据(国家、语言等),它不适用于 Opcache。
直到今天,我一直在使用 Doctrine\Common\Cache\ApcCache 类使用 APC 处理 Doctrine2 的缓存,但似乎不存在使用 OpCache 的类。
这是我用于 APC 缓存的 config.yml:
# Services
services:
cache:
class: Doctrine\Common\Cache\ApcCache
现在,使用 OpCache 我尝试使用ZendDataCache 来处理缓存系统,但不起作用:
# Services
services:
cache:
class: Doctrine\Common\Cache\ZendDataCache
我收到这个错误,所以我假设 ZendDataCache 类不适用于 OpCache:
FatalErrorException: 错误:在 /var/www/meediam/src/vendor/doctrine/common/lib/Doctrine/Common/Cache/ZendDataCache.php 第 38 行中调用未定义函数 Doctrine\Common\Cache\zend_shm_cache_fetch()
最后我配置了ArrayCache,它可以工作了,但是后面没有缓存系统。
所以问题是, 有人知道如何将 Zend OpCache 与 Doctrine 2 Cache 一起使用吗?
PS:我使用的是 Symfony 2.3.2
【问题讨论】:
PHP 的 OpCache 是一个简单的操作码缓存。为了将数据存储在缓存中,您需要类似:APCu. 完美。它使用 APCu 用户缓存工作。 (如果需要,您可以在新回复中回答问题以将其标记为已解决) 【参考方案1】:添加我的评论作为答案。
PHP 的 OpCache 不像 APC 那样是一个完整的缓存,它只是一个简单的操作码缓存。如果您想像使用旧 APC 一样存储自定义数据,您可以使用 Joe Watkins' APCu: https://github.com/krakjoe/apcu。
还有yac和memcache。
【讨论】:
【参考方案2】:您实际上可以通过 PhpFileCache 间接使用 OpCache
【讨论】:
以上是关于如何将 ZendOpCache 用于 Doctrine2 缓存?的主要内容,如果未能解决你的问题,请参考以下文章