gpt4 book ai didi

php - 当 session 数组不再足够时

转载 作者:行者123 更新时间:2023-11-29 12:46:18 25 4
gpt4 key购买 nike

假设我们有一个巨大的数据库(MySQL 和 PHP),其中有两个表:

Important id in table #1 
Important id in table #2

登录网站的人可以喜欢他们在网站任何页面上遇到的这些表中的任何记录。类似的内容将被存储并实时添加到:

Important_SESSION_Array_#1
Important_SESSION_Array_#2

每次点赞时,SESSION 数组都会首先使用新值进行更新。所有值都是唯一的 ID:AI 整数。 (并与 dBase 中的其他表相关。)

然后,在每个页面加载时,您访问这两个 session 数组,并从实时加载的其他表中查找匹配的 ID。

这种情况引发了几个问题:

  • 这些 session 数组可以有多大或多长?有实际限制吗?
  • 是否有关于在移动设备上使用和设备上有限 session 存储的任何知识?
  • 有更好的处理方法吗? (我确信有!)
  • 欢迎就此提供更多见解

这是一个示例,但我们在这一级别实际遇到了超过 2000 万条记录。因此,我们正在寻找更好的方法来处理此类海量数据 - 甚至针对每个用户。

非常欢迎您对此有任何想法!

最佳答案

session 数组中可存储的最大数据量与 PHP 允许使用的最大数据量 (memory_limit) 相同。请注意,仅用 session 数据填充允许的内存而不为任何其他变量留下空间可能会很不方便。

PHP session 存储在服务器上,客户端浏览器的功能与此无关。

尽管可以允许 PHP 拥有 1 GB 或更多的 session 数据,但当您滥用 session 充当缓存时,这被认为是不好的做法。执行 session_start() 时, session 中的所有数据都会从永久存储(最有可能是文件)完全读入内存,然后反序列化(这需要大量 CPU),并在脚本结束时(或者当执行 session_write_close() 时,整个数据再次被序列化(CPU!)并写回永久存储(I/O)。不断地将 1 GB 数据移入和移入文件存储将极大地影响您的应用程序性能。

将一个人喜欢的东西的 ID 保存到 session 中并不是最好的方法。喜欢一个 id 就是对数据库的一次 INSERT。查询此人喜欢哪些 ID 就是一个 SELECT。两者都由正确的索引设置(例如用户 ID)提供支持,并且只有在代码确实需要该知识时才会执行。与在 session 中存储该信息相比,这很可能会降低性能(存储的 ID 数量没有上限)。

关于php - 当 session 数组不再足够时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com