对于登陆注册量比较大的网站,session直接写入文件。对于登陆访问量比较大的网站session本身就比较多,如果提高session的读取速度可以提高访问速度和减轻服务器一定的负担。而memcached可以做到这一点。修改的主要有两个参数:session.save_handler为memcache和session.save_path为tcp://ip:port
方式一:修改php.ini的配置文件
方式二:通过ini_set()函数设置对本页面有效的session配置ini_set(“session.save_handler”,“memcache”)ini_set("session.save_path","tcp://ip:port")
memcached和session的区别:
在读写速度上会比文件快很多,而且在多个服务器需要共用 session 时会比较方便,将
这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。
其缺点是 session 数据都保存在 memory 中,一旦当机,数据将会丢失。但对 session 数据来
说并不是严重的问题,其本身就是临时性数据。 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。
当把memcached服务器放在公网上,就不安全了,可以放置在局域网中,通过防火墙拒绝对memcached服务的端口的直接请求,必须通过Apache服务器间接地访问memcached的服务。
当然需要注意的地方有::
1、memcache的内存应该足够大,这样不会出现用户session从Cache中被清除的问题(可以关闭memcached的对象退出机制)。
2、如果session的读取比写入要多很多,可以在memcache前再加一个Oscache等本地缓存,减少对memcache的读操作,从而减小网络开销,提高性能。
3、如果用户非常多,可以使用memcached组,通过set方法中带hashCode,插入到某个memcached服务器//暂时不能理解
对于session的清除有几种方案:
(1)可以在凌晨人最少的时候,对memcached做一次清空。(简单)
(2)保存在缓存中的对象设置一个失效时间,通过过滤器获取sessionId的值,定期刷新memcached中的对象.长时间没有被刷新的对象自动被清除.(相对复杂,消耗资源)