我在服务器上有一个包含数百万个文件的文件夹
文件名将为LMN20110305.txt
pattern.
如果我试图在四月搜索文件,我现在正在阅读目录
获取文件名并使用子字符串检查它大于或小于
20110401
和20110430
在这种情况下,它将读取整个目录,这需要花费很多时间。我也在考虑检查创建日期。
glob
的性能如何-查找匹配模式的路径名
愚蠢的怀疑!有没有可能不搜索整个目录就能找到文件?
glob()
将执行良好。它在标准库中是有原因的,使用它吧!
我的理解是,glob()
几乎直接映射到系统C库中的glob()
函数,这意味着它很可能比您自己编写的任何函数都更有效。唯一的限制是内存:如果你用完了内存,你要么需要给PHP更多的内存,要么需要重新组织。
如果你遇到内存问题,如何更好地组织你的文件?一个文件夹里有一百万个文件太多了。以某种方式组织它们。如果你的文件是有日期的,试着按年(也可能是月)来组织它们,就像这样:
basedir/
|---/2011
|---/2010
etc.
这是一个文件系统问题,而不是PHP问题。除了通过通常的系统调用之外,PHP没有特殊的方法来读取目录。您需要更改存储模式,一种适合传入数据分布的树状结构。