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

使用PHP,我们可以在目录中搜索文件名模式,php,file,file-io,Php,File,File Io,我在服务器上有一个包含数百万个文件的文件夹 文件名将是LMN20110305.txtpattern 如果我只是在四月才尝试搜索文件,我现在正在读取目录 获取文件名并使用子字符串检查其是否大于或小于 20110401和20110430 在这种情况下,它将读取整个目录,需要花费很多时间。 我也在考虑检查创建日期 glob-查找与模式匹配的路径名的性能如何 有谁有更好的建议吗 愚蠢的怀疑!是否可以在不搜索整个目录的情况下找到文件?将正常运行。它在标准库中是有原因的,使用它吧 我的理解是glob()。唯

我在服务器上有一个包含数百万个文件的文件夹

文件名将是
LMN20110305.txt
pattern

如果我只是在四月才尝试搜索文件,我现在正在读取目录

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

20110401
20110430

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

glob
-查找与模式匹配的路径名的性能如何

有谁有更好的建议吗

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

将正常运行。它在标准库中是有原因的,使用它吧

我的理解是
glob()。唯一的限制是内存:如果内存不足,则需要为PHP提供更多内存或重新组织

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

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

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

谢谢您的回答……但请告诉我有关此页面的一些信息……如果您试图在存储大量文件(>100.000)的目录中列出文件,请不要使用glob()。出现“允许的XYZ字节内存大小已用尽…”错误。您可以尝试增加php.ini中的memory_limit变量。我的设置为128MB,当全局加载超过500.000个文件时,脚本仍将达到此限制@zod,这是用户评论。php.net上的用户评论是,嗯,不确定的。。。您可以全局访问的文件数量没有设置限制,但是如果您有一百万个文件,您的内存将耗尽。您需要分配更多内存或重新组织文件。@zod如果达到内存限制,请尝试使用
GLOB\u NOSORT
作为
GLOB()
的第二个参数。如果您仍然达到此内存限制,请按照您在glob手册页中引用的注释执行
opendir()
readdir()
循环,
closedir()
。我想现在开始使用子目录已经太晚了。。。