2013-02-01 77 views
0

我使用了具有doctrine/mongodb(+ fate/Silex-Extensions)的silex,現在我想用這個組合存儲會話。可能嗎?使用Silex在MongoDB中存儲會話

+0

我不明白爲什麼它不起作用。但是,使用類似memcached的東西可能會更好。 – datasage

回答

1

這可以完成,你需要做的就是編寫一個SessionHandler的實現。您可以看看Symfony中的實現,例如MemcacheSessionHandler

然後,您可以覆蓋SessionServiceProvidersession.storage.handler服務於自己的實現:

$app['session.storage.handler'] = $app->share(function ($app) { 
    return new Your\MongoDBSessionHandler(); 
}); 

PS:這可能確實是更容易使用類似的Redis或內存緩存,因爲它們的擴展已經與船預先定義會話處理程序,您可以使用。您可以在silex中簡單地使用disable the default session handler以使其使用全局php.ini配置。

+2

謝謝!根據你的鏈接,我找到了一個現成的解決方案:[MongoDbSessionHandler](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/MongoDbSessionHandler.php) – rado