SESSION 的数据保存在哪里呢?

SESSION 的数据保存在哪里呢?

当然是在服务器端,但不是保存在内存中,而是保存在文件或数据库中。

     默认情况下,php.ini 中设置的 SESSION 保存方式是 files(session.save_handler = files),即使用读写文件的方式保存 SESSION 数据,而 SESSION 文件保存的目录由 session.save_path 指定,文件名以 sess_ 为前缀,后跟 SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的数据即是序列化之后的 SESSION 数据了。

     如果访问量大,可能产生的 SESSION 文件会比较多,这时可以设置分级目录进行 SESSION 文件的保存,效率会提高很多,设置方法为:session.save_path="N;/save_path",N 为分级的级数,save_path 为开始目录。

     当写入 SESSION 数据的时候,PHP 会获取到客户端的 SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。读取 SESSION 数据是也是类似的操作流程,对读出来的数据需要进行解序列化,生成相应的 SESSION 变量

Session数据保存在服务器端,具体来说,是保存在服务器内存、硬盘或数据库等持久化存储设备中。当用户首次访问 Web 应用程序时,服务器会为该用户创建一个 Session,然后将 Session 的 ID 通过 Cookie 或 URL 的方式返回给客户端,以便客户端能够识别并关联请求与 Session。 当客户端在后续的请求中携带 Session ID 时,服务器会根据该 ID 在服务器端查找对应的 Session,并将请求与该 Session 关联起来。在 Session保存数据会一直存在,直到 Session 超时或被主动销毁。 Session 的具体存储方式可以通过 Web 应用程序的配置文件或代码进行指定。在默认情况下,Session数据保存在服务器内存中,但是如果服务器重启或崩溃,数据会丢失。为了保证 Session数据不会丢失,可以将 Session数据保存到硬盘或数据库中。可以使用以下代码将 Session数据保存数据库中: ``` <Manager className="org.apache.catalina.session.PersistentManager"> <Store className="org.apache.catalina.session.JDBCStore" connectionURL="jdbc:mysql://localhost:3306/session_db" driverName="com.mysql.jdbc.Driver" sessionAppCol="app_name" sessionDataCol="session_data" sessionIdCol="session_id" sessionLastAccessedCol="last_access_time" sessionMaxInactiveCol="max_inactive_interval" sessionTable="session_data"/> </Manager> ``` 这将会将 Session数据保存到名为 session_data 的表中,表中包含 session_id、app_name、session_data、last_access_time 和 max_inactive_interval 等字段,具体含义可以参考配置文件中的注释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值