2013-02-01 50 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