【发布时间】:2009-07-08 23:36:24
【问题描述】:
我有一个函数可以检测所有以字符串开头的文件,它会返回一个填充了对应文件的数组,但它开始变慢了,因为我在特定目录中有 20000 个文件。 我需要优化这个功能,但我就是不知道怎么做。这是函数:
function DetectPrefix ($filePath, $prefix)
{
$dh = opendir($filePath);
while (false !== ($filename = readdir($dh)))
{
$posIni = strpos( $filename, $prefix);
if ($posIni===0):
$files[] = $filename;
endif;
}
if (count($files)>0){
return $files;
} else {
return null;
}
}
我还能做什么?
谢谢
【问题讨论】:
-
改变那个目录结构怎么样?您可以根据文件名的第一个字符创建子目录,这样可以更快地找到相关文件。查找 bb* 时无需查看 a/a/aa*
-
glob 可能会有所帮助,但 KM 是正确的:从长远来看,您必须对目录结构做一些事情。在一个目录中有这么多文件会导致很多问题。
-
我对那个目录中的大量文件无能为力。古老的软件:必须忍受它;)谢谢您的所有回答!
标签: php optimization