昨天深受打击,居然那么简单的呃题也做不出来,今天恶补下~研究了下session的生存周期的问题
其实session的周期在单服务器上是蛮好理解的,
先说下工作原理
/**********摘自别人的博客***************/
先来了解一下 PHP SESSION 的工作原理。在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ID(此 ID 可通过函数 session_id() 获取/设置)。SESSION ID 可以通过两种方式保留在客户端,使得请求不同的页面时,PHP 程序可以获知客户端的 SESSION ID;一种是将 SESSION ID 自动加入到 GET 的 URL 中,或者 POST 的表单中,默认情况下,变量名为 PHPSESSID;另一种是通过 COOKIE,将 SESSION ID 保存在 COOKIE 中,默认情况下,这个 COOKIE 的名字为 PHPSESSID。这里我们主要以 COOKIE 方式进行说明,因为应用比较广泛。
那么 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 变量。
/**********摘自别人的博客***************/
博文地址
开始贴代码
/***************代码开始*********/
1.phpcode
$save_path="./session_save_dir/"; 
session_save_path($save_path); //session存放的设置路径
//setcookie();
session_set_cookie_params(5); //设置生命周期为5秒
session_start();    //
$_SESSION['a']='22222'; //赋值
    $arr=session_get_cookie_params(); //获取会话 cookie参数 
  print_r($arr);
    echo 12;
?>
/***************代码结束*********/
代码截图
session生命周期小计_第1张图片
经接着就是测试了~~如果才是有效果的说明我们的生命周期是设置成功了呢?这个问题困扰了我很久~后来经过某童鞋的指点,才恍然大悟
只要观察的save_path里的session的文件,以sess_开头的文件,现在每隔 5秒钟 刷新一次就会在save_path下看到一个新的 就说明成功了
session生命周期小计_第2张图片
大家感受下,是不是有生存周期的问题噢~