Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只能使用会话变量实现持久数据吗?_Php_Session_Checkout - Fatal编程技术网

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

Php 只能使用会话变量实现持久数据吗?,php,session,checkout,Php,Session,Checkout,我在想oldnavy.ca的一页结账系统 如果你能抽出时间把一些东西扔进购物车,四处乱逛,看看它是什么样子,我将不胜感激 让我困惑的是刷新页面会保存进程的当前状态。因此,如果您创建了登录名并添加了发货地址,则当您点击“刷新”时,该地址就会出现 读了很多文章,听起来使用会话变量来存储大量数据并不是一个好的编程。现在,正在存储表单数据,如装运信息等。。。考虑了很多数据 我只是想知道他们是如何实现这个购物车系统的,因为它在任何地方都被使用,我不想不愿意使用会话变量 也许有替代品在使用 谢谢关于这一点,

我在想oldnavy.ca的一页结账系统

如果你能抽出时间把一些东西扔进购物车,四处乱逛,看看它是什么样子,我将不胜感激

让我困惑的是刷新页面会保存进程的当前状态。因此,如果您创建了登录名并添加了发货地址,则当您点击“刷新”时,该地址就会出现

读了很多文章,听起来使用会话变量来存储大量数据并不是一个好的编程。现在,正在存储表单数据,如装运信息等。。。考虑了很多数据

我只是想知道他们是如何实现这个购物车系统的,因为它在任何地方都被使用,我不想不愿意使用会话变量

也许有替代品在使用


谢谢

关于这一点,没有硬性的答案,只有指导方针

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

将文件从磁盘读入内存需要多长时间? 磁盘缓存可以阻止每次物理磁盘访问,但文件越大,磁盘缓存中的文件就越少 RAM中的数据占用了多少内存? 序列化数据并将其写回磁盘需要多长时间? 您有多少并发用户需要PHP始终在磁盘上读写? 会话处于活动状态的时间有多长,即在对会话文件进行垃圾收集之前,磁盘上会散落多少个会话文件? 对于典型的小型网络商店(而不是亚马逊大小的),答案是基于文件的会话通常是完美的。您可能在每个文件中最多存储几十KB,这足以保存用户的地址数据和购物篮。你几乎不会遇到这样的问题


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

他们不一定在会话中存储所有内容-他们可能在会话中存储唯一的ID,然后将所有内容添加到数据库中。但是,没有真正的方法来确定他们是如何处理它的——从最终用户的角度来看也是一样的。直接将它存储到数据库会更有效吗?当会话过期时,他们必须手动从数据库中删除该数据。如果他们这样做,他们将有一些定期运行的程序,并清理一段时间内未更新的会话-磁盘空间很便宜,并且在深夜运行批作业不会被大多数用户注意到。因此,另一种选择是保存会话ID并在数据库中拥有所有相关数据?我的下一个问题是,当会话过期时,您将如何删除该数据?我的购物车将是低容量的,因此会话对我来说可能更容易。会话只是一个具有唯一ID的cookie和一些服务器端机制,这些机制将数据存储在与该ID关联的某个位置。如果要使用非基于文件的会话存储,请查看。删除数据是所选会话处理程序垃圾收集周期的一部分。