如何使用ZendOpCache进行Doctrine2缓存?

时间:2013-08-03 16:09:58

标签: php symfony doctrine-orm opcache

我已经在我的开发环境中安装了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()< / p>

最后我配置了ArrayCache,它可以工作,但没有缓存系统。

所以问题是, 任何人都知道如何将Zend OpCache与Doctrine 2 Cache一起使用?

PS:我使用的是Symfony 2.3.2

2 个答案:

答案 0 :(得分:7)

添加我的评论作为答案。

PHP的OpCache不是一个完整的缓存,因为它是一个简单的操作码缓存。如果您想像使用旧版APC一样存储自定​​义数据,可以使用Joe Watkins' APCu:https://github.com/krakjoe/apcu

还有yac和memcache。

答案 1 :(得分:-2)

您实际上可以通过PhpFileCache间接使用OpCache