【问题标题】:Can't connect symfony 2.1.2 to memcache to store sessions无法将 symfony 2.1.2 连接到内存缓存以存储会话
【发布时间】:2012-10-05 13:43:52
【问题描述】:

我正在尝试使用 sf2 框架在 memcache 服务器中托管我的会话。 这是我的配置: 在config.yml中

framework:
    ...
    session:
        handler_id: session.handler.mc
...
services:
    session.memcache:
        class: Memcache
        calls:
            - [addServer , [%session_memcache_host%, %session_memcache_port%]]
    session.handler.mc:
        class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler
        arguments: [@session.memcache]

在参数中我已经设置了这样的信息:

session_memcache_host: memcachesession.lan
session_memcache_port: 11211

在我的控制器中我有这个:

public function indexAction()
{
    $session = new Session();
    $session->start();
    var_dump($session->getId());
    $session->set('foo','bar');
    $session->save();
    var_dump(session_id());
    var_dump($_SESSION);
    return array('name' => 'test');
}

我仍然没有在 memcache 中进行会话...我不知道为什么。 任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 我遇到了同样的问题。它可能是由 NativeSessionHandler 接口问题引起的。他们计划在 Symfony2.2 中删除这些处理程序
  • 其实我不太确定......但似乎 MemcacheSessionHandler 中的前缀部分似乎打破了它。我已经覆盖它以删除前缀部分,看起来没问题。
  • 我不知道如何从我的config.yml中清除它......你如何设置一个空字符串?
  • 嗯,是的……默认情况下,sf2 会在所有前缀上加上 sf2s_ 这就是为什么我在其他应用程序中找不到它的原因。

标签: session symfony memcached


【解决方案1】:
services:
session.memcache:
    class: Memcache
    calls:
        - [addServer , [%session_memcache_host%, %session_memcache_port%]]
session.handler.mc:
    class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler
    arguments: [@session.memcache, {prefix: ""}]

这里的要点是设置一个空前缀......所以我有我的真实会话名称......我在其他应用程序中拥有的那个。现在一切正常

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2011-02-21
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多