files, mysql保存session应该是最常见的了,但后面的几种方式就不明白了,原理是什么,有什么优缺点?还望高手指点指点.,,,,

解决方案 »

  1.   

    其实就硬盘和内存两种,分什么弄那么多概念 ?硬盘的文件存储一个比一个慢,如files , mysql  ...内存里就快,但容易掉失, 如memcache , shmop。
      

  2.   

    多谢coolesting
    醍醐灌顶呀,这个概念我一直没弄清楚。做保持登录的程序,用cookie在客户端,但想做一个显示当前在线会员的功能,只想到了session。
    开始准备用file,但考虑到如果会员过多的话,一个文件夹下保存过多session文件对性能有影响。准备用mysql,使用内存表做,我想这样的话,mysql保存session也是 内存类型的吧。这也遇到一个矛盾,
    内存表最大存储量只能是varchar(255),因为我只是在这里用到了session,还是其他的程序部分用到过,这就是说有可能session的长度不够用。这个问题,一直想找一个平衡点,如果myISAM的话,又怕影响性能。有朋友能给点建议吗?
      

  3.   


    先感谢你的回帖,但说实话,我很讨厌看到这几个字。看到过太多的关于优化的帖子,如此多的人会选择回复这么几个字母。memcache就真的那么神奇?貌似关于优化他都能胜任,并且也没说下具体方法,这让人很是郁闷。这个问题 概念弄明白了,最后还是选择了 file的方式,因为msql用内存表做长度限制让我没办法用。
    结贴
      

  4.   

    wisword,同意你的说法,内存肯定是快,但也会带来不少副作用。我放弃了使用session记录用户在线状态的想法,session仅仅在管理员后台使用,这样用file应该也没什么影响了,毕竟管理员还是少数
      

  5.   

    虽然已经结帖,但我今天才看到你4楼的回复,就讨论一下吧
    以前我也考虑个你这个问题,后来得到的结论是这样:
    正如你所说,性能和速度这之间有个平衡点,这个由硬件决定,
    如果我们只做软件开发的,这个是客观因素是不可改变的了
    那么我们可以从软件上入手,软件的应用关键是需求,你把要缓存的数据封装成类或接口,以便随时可以修改,
    其次,我们将开发划分成好几个阶段,如version 1.0, version 2.0
    当v1时我们全用session去做缓存,当然你可能给调用它们的函数或方法做些标记以示区分,
    当以后升级到v2时,我们用memcache来细化项目,把经常用的缓存不在放session,直接放内存,
    当v3时,再把固定不变的数据生成全静态,放于硬盘文件系统,等等,如是这般。
    一个好的,完美的项目不可能一蹴而就,一步到位,要经过长期升级和维护,根据需求决定,
    而需求是经常改变的,所以好的项目在于灵活性,很多项目因为策划过多过全面,中途夭斥。