飞嗨,欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。(本博已于2015.12.6升级到php7,运行环境php7 php-fpm + nginx1.8.0)

session深层次理解

PHP lf 1792℃ 0评论

http协议是web server和客户端browser相互通信的协议,是一种无状态协议。越来越复杂的web应用,需要保存一些用户的状态信息,session方案应需而生。
一、与session存储相关php.ini设置
session.save_handler = file 用于读取、回写session的数据方式,默认是file,基于文本文件存储session数据
session.save_path = ” 指定保存session文件的目录(指定目录必须要有httpd守护进程属主,比如apache或www等写权限),当指定目录不存在时,php session环境初始化函数是不会帮你创建指定目录的,所以需要你手工建立指定目录。它还可以写成这样session.save_path =“N;/path” 其中N是整数。这样使得不是所有的session文件都保存在同一个目录中,而是分散在不同目录。这对于服务器处理大量session文件是很有帮助的。(注:目录需要自己手工创建)
session.auto_start = 0
如果启用该选项,用户的每次请求都会初始化session。

二、session数据的写入
一旦调用了session_start()初始化session,就意味着开始了一个session生命周期。也就是宣布了,可以使用相关函数操作$_SESSION来管理session数据。这个session生命周期产生的数据并没有实时地写入session文件,而是通过$_SESSION变量寄存在内存中。
session_start(),初始化session,也标识着session生命周期的开始。要使用session,必须初始化一个session环境。session_start()之前为什么不能有任何输出呢?session要么是基于cookie、要么是基于url的,session_start()的时候,其实是设置了一个名字为phpsessid的cookie,基于这个cookie才能找到对应的session。
$_SESSION,是一个全局变量,类型是Array,映射了session生命周期的session数据,寄存在内存中。在session初始化的时候,从session文件中读取数据,填入该变量中。在session生命周期结束时,将$_SESSION数据写回session文件。

转载请注明:飞嗨 » session深层次理解

喜欢 (1)or分享 (0)

Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /work/php/blog/wp-content/themes/yusi1.0/comments.php on line 17
发表我的评论
取消评论

表情
粤ICP备15018643号-1