访问比较多的php站,使用session是否合适
看到有的cms使用session类,就是模拟session的机制,用数据库存储一些用户信息,这是不是说明使用session会带来一些弊端,毕竟php的session都是现...
看到有的cms使用session类,就是模拟session的机制,用数据库存储一些用户信息,这是不是说明使用session会带来一些弊端,毕竟php的session都是现成的,谁也不会闲着没事儿搞个没用的东西,而且看到一个国外的博客,他就说自己除了必要的地方,如验证码,基本不用session,哪位大哥懂得,给小弟讲讲这是为什么
展开
2个回答
2012-03-29
展开全部
1、如果大点的网站使用 Session 是不是不合适?有什么损害? 优点 如果要在诸多Web页间传递一个变量,那么用Session变量要比通过QueryString传递变量可使问题简化。 要使WEb站点具有用户化,可以考虑使用Session变量。你的站点的每位访问者都有用户化的经验,基于此,随着LDAP和诸如MS Site Server等的使用,已不必再将所有用户化过程置入Session变量了,而这个用户化是取决于用户喜好的。 你可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在VB中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放。 缺点 Session变量和cookies是同一类型的。如果某用户将浏览器设置为不兼容任何cookie,那么该用户就无法使用这个Session变量! 当一个用户访问某页面时,每个Session变量的运行环境便自动生成,这些Session变量可在用户离开该页面后仍保留20分钟!(事实上,这些变量一直可保留至“timeout”。“timeout”的时间长短由Web服务器管理员设定。一些站点上的变量仅维持了3分钟,一些则为10分钟,还有一些则保留至默认值20分钟。)所以,如果在Session中置入了较大的对象(如ADO recordsets,connections,等等),那就有麻烦了!随着站点访问量的增大,服务器将会因此而无法正常运行! 因为创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。 虽然“你可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在VB中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放”。但是,“谁”想到那儿呢?变量的含义是什么?这些都变得不很清晰。 使用Session变量既有优点,又有缺点。就我个人的观点,最好少用,但在某些地方使用它们确实能使Web开发大大地简化。是否使用Session变量完全取决于个人的需要,无论使用与否,都要事先考虑其优缺点 2、如何截取Session超时 <?php session_start(); $_SESSION[loginTime] = time(); header('location:2.php'); ?> 保存为1.PHP,假设你的用户成功登陆,自动跳转到2.PHP <?php session_start(); if(time() > $_SESSION[loginTime] + 5) echo '超时'; else echo '未超时'; ?> 刷新2.PHP,会在5秒后显示超时,大体思路是这样的,具体情况具体分析,祝你好运
~
展开全部
session的实现过程相对较为复杂
如果你仔细地去了解过session,你就会看到在session的存储目录下,一个用户对应一个session,而且这个session是经过编码的。
读写session都会需要硬盘的读写操作,同时还有繁杂的编解码操作,另外,网站访问量大的时候,硬盘磁头会频繁地去读取session,写session,这种文件读写方式和数据库的读写完全不同,效率差距更是一个天上一个地下,你不妨编个代码测试一下就会明白了。
磁盘的磁头如果大量地被session占用的话,那会大大拉低你的磁盘读取性能,同时把整个服务器的本机数据交换效率拉低。
上面的这个原因是最大的,当然还有其它的原因,比如大量的session会占用内存、会产生大量的磁盘碎片等等。
如果你仔细地去了解过session,你就会看到在session的存储目录下,一个用户对应一个session,而且这个session是经过编码的。
读写session都会需要硬盘的读写操作,同时还有繁杂的编解码操作,另外,网站访问量大的时候,硬盘磁头会频繁地去读取session,写session,这种文件读写方式和数据库的读写完全不同,效率差距更是一个天上一个地下,你不妨编个代码测试一下就会明白了。
磁盘的磁头如果大量地被session占用的话,那会大大拉低你的磁盘读取性能,同时把整个服务器的本机数据交换效率拉低。
上面的这个原因是最大的,当然还有其它的原因,比如大量的session会占用内存、会产生大量的磁盘碎片等等。
更多追问追答
追问
这样看来确实不能用session,cookie会存在这个问题吗?就是大量的文件写入读取
追答
不是不能用啊。
是少用,不用session的话,一般的用户验证就不好实现,所以,session还是有它利用价值的。
cookie是存储在客户端上的,尽量不要存储太多的cookie,因为它需要占用服务器与客户端的网络资源,只要你的站点有cookie,每一次的刷新访问,就都带着这些cookie来回的header,所以它和session一样,虽然它不占用你服务器的资源,但少用,却不可不用。
到了HTML5的时候,甚至可以自定义用户的存储空间,这是一个相当好的改观,因为可以自定义缓存了,但现在我们应用还是嫌少了一些,毕竟还没有广泛发展。
session要用,cookie要用,但尽力少用。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询