假设我有一个可用于存储会话的缓存系统:
// example i have a cache class
$memcached->add('key','value');
// then i can get the session from
$memcached->get('key');
使用缓存(例如memcached,也许Redis可以适用于会话而不是使用PHP的内置会话,有什么优点和缺点?)
答案 0 :(得分:4)
我想从澄清开始。当您使用PHP会话存储时,会话将存储在一个文件中(通常在/ tmp中)。每个会话都成为它自己的文件。
当您使用memcached或redis存储会话时,PHP代码中的任何内容都不会更改。
您可以简单地配置php以使用redis或memcache来存储会话(通过php.ini中的会话保存处理程序配置)。
优点:
缺点:
现在,我实际上建议使用redis而不是memcache,因为会话将成为永久性的,所以如果你需要重新启动服务器,你的所有用户都不会被注销。
对于redis: https://github.com/owlient/phpredis(请参阅页面下方的“会话处理程序”)
答案 1 :(得分:3)
通过将session.save_handler
设置为mm
,您应该能够在Apache的运行时内存中拥有PHP存储会话数据。但是,为此,您需要使用内存管理模块(--with-mm
)编译PHP,我认为这不适用于Windows。
如果您想使用memcached或其他一些缓存机制,那么最好使用session_set_save_handler
实现用户定义的存储处理程序,这样您就不必重写会话管理代码。
如果你这样做,那么我认为以这种方式存储会话数据没有任何明显的缺点。明显的优势是速度。
修改强> 我遇到了this page,除了速度之外,还讨论了使用memcached存储会话的主要优点/缺点,即: