php - 有人将数据库数据存储在 PHP $_SESSION 中吗?

标签 php mysql session caching memcached

我刚刚加入一个项目,并一直在检查代码。我们需要将大量数据导出到 Excel 供内部用户使用。在给定时间大约有 5 个人可以访问此功能。为了输出到 Excel,我找到了以下内容:

  • 从数据库检索数据,存储在$_SESSION中
  • 显示数据的 HTML 页面 View

  • 当用户想要导出时

    • 从 $_SESSION 检索数据库数据
    • 在 CSV 内存中创建字符串
    • 使用 Excel 作为文件类型打印 HTTP header
    • 打印出 CSV 格式的字符串

即使用户不打算导出,$_SESSION 中的存储也会发生。这让我觉得效率非常低,因为 $_SESSION 变量的大小可能会爆炸,因为每个数据库表每个表的检索最大可达 30MB,$_SESSION 的过期时间设置为 24 小时。因此,系统中可能最多有 5 个用户,并且 $_SESSION 变量最多为 150MB。 听起来不错吗?

还有其他人见过这样的事情吗?这就像盗版 Memcache 吗?将数据写入每隔几个小时更新一次的平面文件不是最好吗?

最佳答案

我确实在 session 中将一些数据存储在数据库中,例如我在每个页面上使用的 ID 或小对象。

但是,当涉及到无法为每个页面加载即时提取的较大数据集时,我通常更喜欢将它们存储在 MEMORY/HEAP 表(或临时文件)中,并且只将 ID 存储在 session ,以便我能够轻松提取它们。

您可能想看看这个有关 session 最大大小的问题: Maximum size of a PHP session

关于php - 有人将数据库数据存储在 PHP $_SESSION 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230438/

相关文章:

php - 在 IIS 7 上运行 PHP 应用程序

php - 通过下拉菜单循环数字,但获取数字而不是字母

c# - ASP.NET 中每个帐户只能登录一次,不使用内置成员资格

mysql - 管理数据库中数据的方法

node.js - 如何在 ReactJs API 调用上维护 Node 后端的 session

android - 如何在整个android原生应用程序中维护服务器登录?

javascript - 如何在yii2中单击按钮时将数据从一个表保存到另一个表?

php - 当我删除帖子(营销事件)时,与已删除营销事件相关的付款仍在数据库中,我也想将其删除。 (拉拉维尔, Controller )

php - 如何使用codeigniter将已删除的记录存储在mysql数据库中

mysql - 试图连接字符串但出现错误