也许有人知道,如何将Doctrine连接到memcached池,将其用作缓存驱动程序?
我已查看官方捆绑文档以及其他许多来源,但未找到此类连接的任何示例。
同样由于源代码,我找不到任何使用池的选项,但也许我会错过一些东西。
答案 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]]