我有一个函数,它检测由字符串启动的所有文件,并返回一个填充了相应文件的数组,但它开始变慢,因为我在特定目录中有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;
}
}
Run Code Online (Sandbox Code Playgroud)
我还能做什么?
谢谢
cee*_*yoz 11
$files = glob('/file/path/prefix*');
Run Code Online (Sandbox Code Playgroud)
维基百科打破上传了由它们的文件名的第一个几个字母,所以excelfile.xls会去像一个目录/uploads/e/x,而textfile.txt会去/uploads/t/e.
这不仅减少了文件glob(或任何其他方法)必须排序的数量,而且还避免了其他人提到的目录问题中的最大文件.