【发布时间】:2012-08-09 12:23:02
【问题描述】:
这是对我昨天的问题的跟进 - 有一条评论问我为什么不将“缓存”存储在数据库中,(我测试了一个文件夹架构,其中有数百万个文件夹被拆分在不同的子文件夹中到 1000 个)开始让我开始思考正确的解决方案。
1 million or more files in one folder, for include (cache)
基本上,在这里更详细一点:我有一个昂贵的计算,需要许多数据库查询。基本上,程序的每个请求都针对特定用户。对于每个用户,结果将始终完全相同(直到用户进行重大更改)。所以基本上,我在想:为什么每次一个人访问这个用户页面时都做这个操作——如果我可以做一次,然后存储它?
基本上,结果是一组不同的 PHP 对象,保存不同的数据/设置/等。所以我正在考虑创建一个 .inc 文件,该文件创建这些对象(具有预定义的值,这将由 SELECT 产生) .每次有人呼叫该特定用户时,我只需快速发送include 即可解决问题。
现在我不太确定那个解决方案了。这意味着,基本上每个用户都有至少一个.inc(可能有多个)文件来包含。这意味着,如果我有一个 UNSIGNED MEDIUMINT 用于用户表的 PK,我需要有一个文件夹结构来支持至少 8388607 * ~2 个文件(最坏情况)。
我想我在这里寻找错误的方向。我有什么可能?
- 选择数据并计算它/在每次页面调用时将其放在一起 - 始终具有相同的结果
- 与 2. 相同,但将生成的对象存储在文件中,代码为 sn-p - 包含
- 与 2. 相同,但序列化生成的对象,将它们保存在文件或数据库中,并在每次页面调用时对其进行反序列化
- ?
还有其他解决方案/方法可以解决此类问题吗?所有这些解决方案在我自己的耳朵里听起来都不太干净,但我正在努力寻找另一种方法来做到这一点。保存 800 万个文件,或者一遍又一遍地计算相同的东西 - 不知何故,两者之间应该有一些东西。
有什么建议吗?
谢谢! - 原谅我糟糕的英语。
【问题讨论】:
标签: php performance file-io include