使用PHP可以在目录中搜索文件名模式

时间:2011-05-05 14:27:22

标签: php file file-io

我的服务器中有数百万个文件的文件夹

文件名将是LMN20110305.txt模式。

如果我试图在四月份搜索文件,我现在正在阅读目录

获取文件名并使用子字符串检查它是否大于或小于

2011040120110430

在这种情况下,它将读取整个目录,这需要花费很多时间。 我也在考虑检查创建日期。

glob的表现如何 - 查找与模式匹配的路径名

任何人都有更好的建议吗?

傻傻的怀疑!是否可以在不搜索整个目录的情况下找到文件?

2 个答案:

答案 0 :(得分:5)

glob()表现不错。它出于某种原因在标准库中使用它!

我的理解是glob()几乎直接映射到系统C库中的glob()函数,这意味着它很可能比您自己编写的任何函数都更有效。唯一的限制是内存:如果你的内存不足,你需要给PHP更多的内存或重新组织。

如果您遇到内存问题,如何更好地组织文件?一个文件夹中的一百万个文件太多了。以某种方式组织他们。如果您的文件已过时,请尝试按年份(然后可能是月份)按照以下方式进行组织:

basedir/
|---/2011
|---/2010
etc.

答案 1 :(得分:1)

这比PHP更像文件系统问题。除了通常的系统调用之外,PHP没有用于读取目录的特殊方法。您需要更改存储模式,某种树结构适合于分发数据。