将Doctrine连接到memcached池

时间:2014-08-26 12:58:16

标签: symfony doctrine-orm

也许有人知道,如何将Doctrine连接到memcached池,将其用作缓存驱动程序?

我已查看官方捆绑文档以及其他许多来源,但未找到此类连接的任何示例。

同样由于源代码,我找不到任何使用池的选项,但也许我会错过一些东西。

2 个答案:

答案 0 :(得分:7)

没有测试,但以下情况应该有效:

在app / config / parameters.yml中,设置/添加

parameters:
    memcached.servers:
        - { host: 127.0.0.1, port: 11211 }
        - { host: 127.0.0.2, port: 11211 }

在app / config / config.yml中设置/添加

services:
    memcache:
        # class 'Memcache' or 'Memcached', depending on which PHP module you use
        class: Memcache
        calls:
            - [ addServers, [ %memcached.servers% ]]

    doctrine.cache.memcached:
        class: Doctrine\Common\Cache\MemcachedCache
        calls:
            - [setMemcached, [@memcached]]

在app / config / config_prod.yml中,设置

doctrine:
    orm:
        metadata_cache_driver:
            type: service
            id: doctrine.cache.memcached
        query_cache_driver:
            type: service
            id: doctrine.cache.memcached
        result_cache_driver:
            type: service
            id: doctrine.cache.memcached

正如我所说,我无法测试它,但这是几种已知工作技术的结合。

更新:根据CrazySquirrel的调查结果更新了解决方案。

答案 1 :(得分:1)

感谢lxg提出您的想法。我使用您的想法构建正确的配置。请在下面找到正确的服务定义:

应用程序配置:

result_cache_driver:
        type: service
        id:  doctrine.cache.memcached

service.yml

memcached:
  class: Memcached
  calls:
      - [ addServers, [ %memcached_servers% ]]

doctrine.cache.memcached:
      class: Doctrine\Common\Cache\MemcachedCache
      calls:
        - [setMemcached, [@memcached]]