我刚刚加入一个项目,并一直在检查代码。我们需要将大量数据导出到 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/