如何将 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 缓存?的主要内容,如果未能解决你的问题,请参考以下文章

安装 ZendOpcache

话说zendopcache与apc

PHP加速插件ZendOpcache使用

安装 ZendOpcache

Zend OPCache - opcache.enable_cli 1 还是 0?它有啥作用?

用Zend OPCache提高PHP的性能