我安装了memcache lib并将其添加到
framework:
session:
handler_id: session.handler.memcache
但是当我尝试使用它时,我收到此错误
[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]
You have requested a non-existent service "session.handler.memcache".
答案 0 :(得分:1)
您想使用memcache
还是memcached
?
这是两个不同的扩展,所以要注意这一点。
我建议使用memcached
,memcache
已经死了。
未定义服务session.handler.memcache
,因此您必须定义一个实施SessionHandlerInterface
,在您的情况MemcacheSessionHandler
。
首先,我们需要将memcache实例定义为服务,因此我们可以将其传递给MemcacheSessionHandler
构造函数:
memcache:
class: \Memcache
calls:
- [ addServer, [ %host_parameter%, %port_parameter% ]]
然后,您的会话处理程序:
session.handler.memcache:
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler
arguments: [@memcache]
您还可以使用像cache/adapter-bundle
这样的包来注册PSR-6兼容服务(甚至是3.1中引入的symfony缓存组件)并使用Psr6SessionHandler
。
如果您想使用memcached
,它的配置几乎相同。
答案 1 :(得分:0)
Symfony有其自己的组件:https://symfony.com/doc/current/components/cache.html
您必须先在/config/packages/framework.yaml
中对其进行配置:
framework:
cache:
pools:
memcached_service:
adapter: cache.adapter.memcached
public: true
provider: 'memcached://memcached:11211'
现在,您可以在任意位置(services.yaml
)注入Memcached服务:
App\Service\SomeService:
arguments:
- "@memcached_service"