码迷,mamicode.com
首页 > 其他好文 > 详细

session、cookie浅见

时间:2015-12-20 18:55:22      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

  万事开头难,刚开始不一定能写好博文,不,应该是一定写的不好,但我定会用心。

  以前只知道session是存在服务器,cookie是存在客户端,至于它们工作的原理就不了解了。为了巩固自己记忆,小小的总结了下。
  一. 首先session,cookie是什么。
    session是用户登录网站后存储在服务器的信息,而cookie就是验证用户、获取session中存储信息的凭证。

    每当我们登陆网站成功后,服务器都会生成一个session用来记录当前登陆用户的信息,同时网站会要求我们的浏览器对应的存储一个cookie(一般是由服务器生成的PHPSESSID)。浏览器每次发送请求都要将cookie传给服务器用于验证用户是否处于登陆状态。


  二. session_start()
    当程序运行到 session_start()的时候,服务器就生成一个用于存储session信息的文件,同时会生成一个唯一的sessionId。sessionId(即PHPSESSID)则以cookie的方式保存在客户端。


  三. session的存储方式。

    session默认是以文件的方式存储(php.ini文件中有一行是:session.save_handler = files)。
    文件存储有两个弊端,〈1〉读取session比较慢,用户量少的话还行,但用户量大的话就会导致大量的输入输出的冗余,这样服务器可能就撑不住了〈2〉多台服务器之间session的共享比较复杂(看过别人用NFS方式实现,不过我自己倒没有尝试过)。


    数据库存储不存在共享的问题,但是频繁的读写也是很消耗资源的。


    那有没有更好的方法,当然有了,就是将session存放在缓存中。这里介绍两种缓存(redis和memcache)。

    redis包含字符串、列表、集合、哈希、有序集合这五种数据结构。memcache只支持key-value的键值对应的存储,所以说redis比memcache强大许多。但是memcache更轻量级,redis对内存消耗很大。如果你的网站的缓存只用于存储session。我觉得memcache会更好一些。


    session存储设置方式(以memcache为例):

      ini_set(‘session.save_handler‘, ‘memcache‘);
             session_save_path("tcp://127.0.0.1:11211");

 

  注:可能有理解错误的地方,而且还有些地方搞不太懂,以后会修改添加。

session、cookie浅见

标签:

原文地址:http://www.cnblogs.com/melody68/p/5004828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!