cookie,session机制

下面的页面模拟登陆

 1 <?php
 2 $time = time()+60*3600; //cookie过期时间
 3 session_start(); //开启session
 4 $session_id = session_id(); //取session_id
 5 $_SESSION['name'] = 'kevin'; //模拟登陆成功,设置用户名
 6 session_commit(); //关闭session文件
 7 setcookie('session_id',$session_id,$time); //向浏览器发送cookie session_id
 8 setcookie('name','kevin',$time-60*3600);
 9 
10 var_dump($_COOKIE);
11 var_dump($_SESSION);

其中session_commit();很关键,假如当前页面执行时间过长,同时用户打开其他页面,session文件会处于占用中。其他页面会处于等待状态,这样,在session文件在使用完之后及时关闭就可以避免。

同样,在session文件关闭后赋值$_SESSION也会出现超时情况

1 <?php
2 var_dump($_COOKIE);
3 $session_id = $_COOKIE['session_id']; //取得cookie中的session_id
4 session_id($session_id); //取出session_id这个session文件
5 session_start();
6 var_dump($_SESSION);

登录之后用户每次发起的请求中都包含之前设置好的session_id,用来验证。也有可能浏览器关闭保存cookie导致无法使用session的情况。

一般session是保存文件中的,大型网站登录人数会非常多。这样设置的时候,可以在session前面加前缀,取session的时候,根据前缀,去对应的目录结构下取session文件。

如果人数继续增加,对文件io压力会增加,可以使用缓存机制来保存session。这是我个人的理解,希望高人指点补充

posted @ 2017-10-25 22:48  artstylemo  阅读(146)  评论(0编辑  收藏  举报