【问题标题】:quantity of data that should be stored in session应存储在会话中的数据量
【发布时间】:2011-05-28 23:29:33
【问题描述】:

假设
我知道存储太多数据不好,需要尽可能简单。

今天的状态
现在,我根据需要使用简单的数据类型(int 和字符串)
主要用于存储用户的 id 并判断他是否已登录。

我的函数必须是静态的或单例的,必须在每次发布/获取时构建。

我无法表示和更改当前状态。
并获得一个基本上静态的网站。
大部分状态表示进入 javascript。

目标
另一方面,如果我要创建一个代表整个网站的对象,我将更容易维护用户的输入,包括数据库交互。

简单的问题,应该存储多少数据?

示例

我想要实现的一件事是 与数据库表相关的对象,
让我们为“car.update()”创建一个页面。

现在,如果我为它存储一个对象,它会使用方法扩展与数据库的连接
用于 CRUD。

当我处理从该页面返回的带有详细信息的帖子时,我可以将它们放在所需的属性中并调用更新方法。

现在的情况:我需要使用该详细信息创建一个新对象并进行静态更新

另一个例子

存储以前的搜索结果并使用新数据对其进行过滤

【问题讨论】:

  • 您不能将数据库连接存储在会话中,也不能存储在其他任何地方。去图
  • 所以 MySQLi 表示为对象只是句法?
  • 不知道 mysqli,但这是因为 PHP 的特性,你最好先学习它,然后再设计可怕的类。
  • 没什么可怕的,只是想实现一个简单的动态行为,而不是主要的功能和静态。
  • 即使您可以在会话中以某种方式存储数据库连接,这也是一个坏主意。即使在不活动的情况下,一个用户也会继续占用数据库连接;您的数据库服务器将很快失去连接,即使用户数量很少,您的网站也将无法访问。

标签: php javascript static


【解决方案1】:

在许多情况下,理想的数量是。将用户名与HMAC 哈希一起存储在 cookie 中,用于验证 cookie 是由您的站点创建的,并根据需要从数据库(或缓存)中获取其他所有内容。这使得跨服务器的负载平衡变得容易,因为任何服务器都可以处理任何请求,并且不需要在它们之间共享任何状态。

这种方法不适用于银行业务或其他顶级安全用途,因为如果有人获取了您的 cookie,他们就会与您建立联系。但是对于那些你没有做任何超级关键的事情的网站来说,这很棒。通过在 cookie 处理中添加过期机制,也可以在一定程度上减轻风险。有关更多信息,请参阅与另一个 HMAC 问题相关的 chubbards great answer

【讨论】:

    【解决方案2】:

    请注意,您可以使用session_set_save_handler 切换 PHP 存储数据的方式。这样您就不必更改调用,并通过数据库的效率提高性能/维护。

    【讨论】:

      【解决方案3】:

      您不应该存储大量数据,但如果它可以帮助您更快地为您的页面提供服务,那么您可以毫无问题地存储一些用户信息。

      但是,如果您想建立一个更加动态的网站,您可能会从数据库中检索越来越多的数据。因此,当您毕竟连接到数据库时,您可以跳过在会话中存储各种信息,因为您也可以从数据库中获取它们。大多数数据库(包括 MySQL)都有一个非常有效的查询缓存,可以使重复查询闪电般快速。

      所以在这种情况下,您只需要保存用户 ID 和可能的少量标志。

      【讨论】:

      • 您的意思是在该数据库中存储与网站状态相关的数据?
      • 这取决于数据的种类和并发用户的数量。在会话中保存几百字节的信息不会有问题,但是当它变得更多时,您可能希望将其保存在其他地方。但我想知道您要存储多少和什么样的数据。
      • 添加了两个示例,该网站本身最多可容纳数百或一千人。
      • 您提供的示例更多地与数据库相关,而不是与会话相关。我会将这些值存储在数据库中。我不会在会话中存储诸如搜索结果之类的东西,因为那是大量数据的方式。正如我所说,第二次执行查询将使 MySQL 从缓存中检索结果。在大多数情况下,这意味着查询将在几毫秒内执行。此外,在编辑数据时,应尽快将其存储在数据库中,以防止数据丢失。总有细微差别,但这是一般的经验法则。
      【解决方案4】:

      最低限度是用户 ID——假设它是一个登录类型的界面。但是包含其中最常见的方面通常会有所帮助,例如用户的权限和其他存储在数据库中但在构建页面时经常引用的项目。

      【讨论】:

      • MySQL 链接标识符怎么样?或任何数据库连接对象
      • 不,这些是在每次页面执行时创建的,只要 d/b 连接应该存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2019-09-11
      • 1970-01-01
      • 2014-12-30
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多