php session 效率,【PHP】Session原理简述和缺点

下面我们来了解一下Session的实现和工作原理:

浏览器和服务器采用http无状态的通讯,为了保持客户端的通讯状态,就要使用session来达到这个目的。

首先要将客户端和服务端联系起来,而每个客户端都有一个唯一的标识,建立唯一标识的方法只有两种:cookie和GET

session是服务器端和客户端保持用户会话数据的一种方法,对应的cookie是用来保存客户端的用户会话数据。

PHP使用session是会建立一个“PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,也可以使用GET来把session_id传到服务器上。

session影响系统性能:

一般情况下,php.ini里的session.save_handler默认是file,也就是用文件来保存session,这种方式有几个缺点:

1.如果单靠session自己的垃圾回收机制,时间久了,保存session的文件会越来越多,影响查找效率;

2.对于需要统计同时在线用户的系统,实现起来很不方便;

3. 分布式系统难以共享session。

建议:

1、以数据库来保存session,数据库的连接方式可以采用PDO;

2、定期清除session,一个是清除服务器端的session文件,还有一个是清除客户端的cookie信息。

因为两者都各保存着一半的信息。

PHP的相关Session常用函数

session_start() : 启动session,这个没什么说的了。根据session ID打开session文件,如果没有session ID就创建一个ID和对应的session文件

$SESSION[]数组 :

存放用户信息的全局数组,session文件中除了存放$SESSION中的数据实际也会存放其他的信息,如id等

sessionunset() :

清空$SESSION数组,它是把数组里的值清空了,而$SESSION这个变量还是存在的,和unset($SESSION)是完全不同的概念

sessioncommit() :

提交session数据并结束session,把$SESSION数据写到文件里并结束session,实际上当一个页面执行结束后,php会自动执行与这个函数相同的操作。所以这个函数也很少能用上

session_destroy() :

注销session,这个就是关闭session并删除掉相应的session文件了。切断了客户端和服务端的联系。

转载声明:本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

欢迎捐赠赞赏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值