2012-10-05 59 views
0

我想在使用sf2框架的memcache服務器上託管我的會話。 這裏是配置我: 在config.yml無法將symfony 2.1.2連接到memcache來存儲會話

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中進行會話...我找不出原因。 任何幫助將不勝感激,謝謝。

+0

我得到了同樣的問題。它可以通過NativeSesionHandler接口問題來解決。他們正計劃刪除Symfony2.2中的那些處理程序。 –

+0

其實我並不確定它......但似乎MemcacheSessionHandler中的前綴部分似乎打破了它。我已經覆蓋它,以刪除前綴部分,似乎沒關係。 –

+0

我不知道如何從我的config.yml中清除它...你如何設置一個空字符串? –

回答

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: ""}] 

這裏的要點是設置一個空的前綴......所以我有我的真實會話名稱......我在我的其他應用程序中的名稱。現在一切正常