【发布时间】:2012-08-08 22:38:42
【问题描述】:
我有一个“理论”问题,看看我计划的解决方案是否有意义:
我有一个脚本,它可以从数据库中读取大量数据,包括设置、配置等 - 并构建这些数据(针对每个注册用户)。我不会详细说明为什么或究竟是什么。
我的想法是,我实际上只能这样做一次,然后创建一个带有用户 ID 的 .inc 文件来缓存它。如果用户更改某些内容,当然会重新创建文件。
但是现在,假设我这样做了,有 1'000'000 - 甚至更多的文件。在包含这些文件时,我会遇到问题吗? (总是一个特定的文件,而不是一次每个文件)。这通常是个好主意,还是我只是用这个来给服务器更多压力?
我打算将所有内容都放在同一个缓存文件夹中 - 如果我将该文件夹拆分为多个文件夹,性能会有所提高吗?
感谢您的帮助。
【问题讨论】:
-
我强烈怀疑文件读取时间,尤其是在制作一百万个文件时,会比仅读取数据库的时间少。
-
读取时间不会少,但实际上我必须读取数据库并根据结果计算一些东西。我基本上将“结果”保存为缓存文件(这样就不必每次都执行(检索、分析、计算)它)
-
为什么不将这些“结果”存储在数据库的额外字段中?但除非您进行繁重而广泛的计算,否则没有必要这样做。
-
这确实是 SU/SF 的问题,因为它更多的是关于底层文件系统(NTFS、ext3/ext4 和 XFS 是您在现实世界中最常见的) 将处理它而不是其他任何事情。我的直觉告诉我,一个目录的根目录中有 1000000 个文件是一个糟糕的计划。
-
好问题 - 我认为不在数据库中存储这些东西会更好(+ 少一个数据库调用),看到最终结果实际上通常也包含一些代码(自动生成的代码)而且我真的不想
eval()它,因为afaik,include使用缓存机制,对吗? - 我在寻找其他解决方案,为什么他们倾向于使用缓存文件?我只是不确定这种类型的原始信息是否属于数据库
标签: php performance file-io include