如何做多台服务器同步登录信息

我的程序放在多个服务器中,如何做到session同步。

当访问A服务器时,当我登录后刷新后访问到B服务器上。这时session就没有了,就失去了登录的session。再刷新一次就回到A服务器时,又登录了!

可以使用db,或memcache作为session共享存储。

只要web服务器能访问到db或memcache就可以了

Suggest that using CDbHttpSession

此插入很多数据,刷新一次就一条数据sql,我们做测试,一会就插入了9000000多第数据。那个表就有700MB。这样会影响性能吗?我们分开做了一下测试好像没有什么影响。不过如此大的数据好吗?就是没登录也会插入数据!我觉得应该登录后才会插入数据!

试试redis 这种多站点共享session的设计 必须要一个公共介质用来分享session数据 或者是文件(同一局域网内 应该可以设置共享文件 然后配置各站的session使用此统一文件夹路径) 另外就是共享数据库 session存db中 多站点也可以分享,

在一个就是使用缓存 当然内存缓存有天然可丢失性 所以把session数据放在memchache中一般是不被推荐的 除非你的内存特别大 另外就是考虑向redis这种 在内存不够用时 换页到硬盘(冷数据换到硬盘)数据不易丢失,或者试试mongoDb应该也可以完成这种任务 如果采用这种方案可能要实现ICache接口 然后使用CCacheHttpSession 挂接你的缓存实现 另一个是直接扩展自CHttpSession 复写相关存储 读取 gc(垃圾收集) 关闭等方法 ,在复写时注意存储格式 一般用序列化反序列化或者session_encode 解码时用session_decode 相比较而言 后者占的数据量更小些 但是注意把对象存储在其中时 的情形 自己斟酌吧在session_set_save_handler() 的php 官方例子中有很多评论实现 可以参考下 或者直接参考yii的实现

1 最简单的方法是7层负载根据源ip 通过hash规则将同一源ip分配到后端一台机器上~

2 内存session共享~

3 cookie 加密做session