我正在使用此readdir在文件夹
中查找文件$handler = opendir($folder);
while ($file = readdir($handler)) {
if ($file != "." && $file != ".." && substr($file,0,7) == '98888000') {
print $file. "<br />";
}
}
但由于文件夹中有大量文件,因此完成请求需要几分钟时间:如何加快速度?
考虑一下我在PHP5 + IIS上。
我甚至试过了glob()
foreach (glob($folder.98888000."*.pdf") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
但它没有返回任何内容。
答案 0 :(得分:2)
答案 1 :(得分:0)
首先检查$folder
是否包含/
,这可能会导致glob
出现问题(模式错误)。因此,根据需要添加内容并删除编写propper glob模式所不需要的东西:
$folder = realpath($folder);
foreach (glob($folder.'/98888000*', GLOB_NOSORT) as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
我出于速度原因使用了GLOB_NOSORT
。
您可以使用GlobIterator
class:
glob()
$folder = realpath($folder);
$query = $folder.'/98888000*';
foreach(new GlobIterator($query) as $file)
{
$name = $file->getFilename();
$size = $file->getSize();
echo "$name size $size \n";
}
相关: Iterate over specific files in a directory和9 Ways to Iterate Over a Directory in PHP。