我的服务器中有数百万个文件的文件夹
文件名将是LMN20110305.txt
模式。
如果我试图在四月份搜索文件,我现在正在阅读目录
获取文件名并使用子字符串检查它是否大于或小于
20110401
和20110430
在这种情况下,它将读取整个目录,这需要花费很多时间。 我也在考虑检查创建日期。
glob
的表现如何 - 查找与模式匹配的路径名
任何人都有更好的建议吗?
傻傻的怀疑!是否可以在不搜索整个目录的情况下找到文件?答案 0 :(得分:5)
glob()
表现不错。它出于某种原因在标准库中使用它!
我的理解是glob()
几乎直接映射到系统C库中的glob()
函数,这意味着它很可能比您自己编写的任何函数都更有效。唯一的限制是内存:如果你的内存不足,你需要给PHP更多的内存或重新组织。
如果您遇到内存问题,如何更好地组织文件?一个文件夹中的一百万个文件太多了。以某种方式组织他们。如果您的文件已过时,请尝试按年份(然后可能是月份)按照以下方式进行组织:
basedir/
|---/2011
|---/2010
etc.
答案 1 :(得分:1)
这比PHP更像文件系统问题。除了通常的系统调用之外,PHP没有用于读取目录的特殊方法。您需要更改存储模式,某种树结构适合于分发数据。