只能使用会话变量实现持久性数据吗?

时间:2012-09-11 14:19:03

标签: php session checkout

我正试图找出oldnavy.ca上的单页结帐系统。

如果你可以花点时间把一些东西扔进购物车并乱七八糟地看看它是什么样的,我会非常感激。

令我困惑的是刷新页面会保存进程的当前状态。因此,如果您创建了您的登录名称并添加了送货地址,那么如果您点击刷新,它就会在那里。

阅读很多文章听起来像使用会话变量来存储大量数据并不算是好编程。现在,存储表格数据,如运输信息等......被认为是“很多”的数据?

我只是很想知道他们是如何实现这个购物车系统的,因为它在任何地方使用,我不想在会议变量有效的情况下不愿意使用会话变量。

也许还有其他选择?

由于

1 个答案:

答案 0 :(得分:0)

没有硬性和快速的答案,只有指导方针。

如果您使用标准PHP会话,它们将保存在服务器磁盘上的普通文件中,每个活动会话一个。这也意味着在每个页面加载时,相关的会话文件从磁盘读入内存。多少"太多"取决于很多因素...

  • 将文件从磁盘读入内存需要多长时间?
  • 磁盘缓存每次都可以阻止物理磁盘访问,但文件越大,磁盘缓存中的磁盘越少
  • RAM占用的内存量是多少?
  • 序列化数据并将其写回磁盘需要多长时间?
  • 您有多少并发用户需要PHP一直读取和写入磁盘?
  • 会话活动了多长时间,即在垃圾收集之前会在磁盘周围散布多少个会话文件?

对于典型的小型网店(不是亚马逊规模),答案是基于文件的会话通常都很好。你可能每个文件最多存储几十千字节,这足以保存用户的地址数据和购物篮。你几乎不会遇到这个问题。

或者,只有其他会话处理程序。您可以将它们保存在memcache存储或数据库中,从而缓解许多基于文件的问题。评估哪种解决方案更适合您的情况。