php中session是如何工作的

本文讲解php session本质上如何工作,以下是实现的步骤:

1.session在php以扩展的形式加载在php的内核中,我们可以为它是php的一个扩展.

当session扩展被加载,php将调用内核函数来处理session,也就是接口或者函数来读取和写入session数据.

默认的,php将会按处理的文件的方式来存储和读写session.

php也提供自定义的方法来处理session数据,我们可以使用session_set_save_handler()来注册处理方法.

与此同时,php将会检查session_auto_start是否在配置文件中设置为on,如果是的话,php将会调用内部函数来自动创建session.

2.当php创建session,它将会先检查session id是否已经存在在cookie,GET和POST数据中.

如果不存在,也就意味着这是用户第一次访问网站,php将会自动调用

session_create_id()函数来创建一个唯一的sessionid,然后php将会把这个session id通过设置http响应头发送到客户端,php也可以把session id作为一个参数放在url上或者把它放在一个隐藏域里,但这需要在php.ini中把

session.use_trans_sid选项设置为true.

相反的,如果session id已经存在了,php将会做以下事情:

a.从cookie中取得session id

b.调用save_handler的接口来打开存储有session的文件

c. 如果不能读取对应的session id,它将会生成一个新的sessionid

d.注册 SESSION _HTTP_SESSION_VARS_GLOBAL变量, SESSION _HTTP_SESSION_VARS_GLOBAL是一个数组

e.php将会调用save_handler的读接口来读取session数据,如果你存储session数据在一个文件中的话,那么就会在一个文件中读取session数据,

如果把session数据存在数据库的话,将会在数据库中读取session数据,并且把他们保存在$_SESSION变量中.

3.最终,当一个请求完成,php将会调用内部函数来获取$_SESSION的值,然后会通过php的session_encode()函数来序列化他们,之后可能会调用save_handler的写接口来存储session数据.

以上就是关于php session的基本的实现.

欢迎扫描下方二维码关注微信订阅号:byte,每天原创php干货分享

加入php达人QQ群:180687735

加php大牛微信:771023738

扫描二维码关注微信订阅号:byte,每天原创php干货分享
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值