1.这几天做项目服务器迁移,在过程中发现数据总是出现这样那样的问题。项目是刚从其他公司接受的。在正式环境也出国莫名其妙的丢失session的情况,问这个项目的研发,他说他也在找bug。
2.看了代码逻辑,出问题的都是session作为查询条件的。于是就打印的session数组看。果然,同一个sessionid有时就是没有session的其他的值,多刷几下页面就有了。
3.确定问题是负载均衡导致session的问题好办了,本来想写进redis,但是Thinkphp3.2框架里没有session redis的支持。不太想去从网上去拿支持。于是就考虑memcache了。
4.网上搜来搜去很多文章都是截取的,遇到了一些坑。
5.步骤:
当然先安装memcache很简单,请自行百度
a.在php项目入口index.php中在require之前加入函数:
ini_set("session.save_handler", "memcached"); ini_set("session.save_path", "tcp://localhost:11211");
b.配置你的config,不要说不知道配置写哪里:
'MEMCACHE_HOST'=>'127.0.0.1', 'MEMCACHE_PORT'=>'11211', // session配置 'SESSION_TYPE'=>'Memcache',
运行:telnet 127.0.0.1 11211
get (session_id) 自己在调试模式下看
memcache数据有值,ok搞定