一般情况下,php.ini里的session.save_handler默认是file,也就是用文件来保存session,这种方式有几个缺点:1.如果单靠session自己的垃圾回收机制,时间久了,保存session的文件会越来越多,影响查找效率;2.对于需要统计同时在线用户的系统,实现起来很不方便;3. 分布式系统难以共享session。如果将session.save_handler设置为user,php可以通过session_set_save_handler函数来重载session的几个底层会话处理方法,以达到使用数据库来保存session的目的,下面以mysql数据库为例,数据库连接方式采用PDO。

解决方案 »

  1.   

    的确,推荐。
    其实自己模拟session(比如用cookie),然后操作数据库,也可以实现。
      

  2.   

    不客气,只要有时间,我会分享给大家一个完整的保存session在数据库中的类,该类可以抵御session固定以及劫持攻击!
      

  3.   

    敝站就是mysql保存session的,效率不看好。
    memcached相对好一点。
      

  4.   

    我直接把session.save_handler修改成了memcache,存儲路徑指向memcache的鏈接地址.
    這樣就不會有io壓力了,而且速度更快
    最好的方法是不要修改php.ini
    我的做法就是在.htaccess里重定義了session的這個存儲機制.
      

  5.   

    Memecache的方式的话肯定更快啊,读取内存肯定比数据库快得多, 有没有写这方面的文章啊,分享一下给大家啊!
      

  6.   

    还是将session的数据存入数据库吧
      

  7.   

    上次就做了个session变量直接在页面传值,后来又把session变量值存入数据库  不过我看好多数据都是通过session变量直接在个页面中传递   存储在数据库每次来回取感觉也麻烦啊  
      

  8.   

    不管你把session存在数据库中,还是文件中,都是有写入以及读出操作,session变量不是通过页面来传递的,不同页面请求中传递的是session id, 不是session数据...服务器获取客户端传递过来的session id以后,会自从数据库或者文件中读出对应的session数据,如果发现没有改对应的session id存在,就会产品一个新的session id! 你可以读读我写的这篇文章,不过还没有写完:http://www.360weboy.com/php/session/%E4%BD%A0%E5%BF%85%E9%A1%BB%E4%BA%86%E8%A7%A3%E7%9A%84session%E7%9A%84%E6%9C%AC%E8%B4%A8.html
      

  9.   

    貌似之前有个一片关于淘宝做的架构,里面就有设计到session的问题 
      

  10.   

    Session的本质 - http://www.360weboy.com/php/session-cookie/session_essence.html
      

  11.   

    Session的本质 - http://www.360weboy.com/php/session-cookie/session_essence.html
      

  12.   

    Mark....   好贴标记
      

  13.   

    我是不赞同在帖子中附带广告的,就算附带了也不能是无效的!http://www.360weboy.com/category/php/session
    标题 Nothing found for  Category Php Session
    正文内容 Error 404 - Not Found这有意义吗?
      

  14.   

    楼上,应该是这个链接 - http://www.360weboy.com/php/session-cookie/store_session_to_database.html
      

  15.   

    http://www.360weboy.com/php/session-cookie/store_session_to_database.html