我有一个包含 600 多个 mp4 文件的目录和几个目录。我试图循环遍历文件并确定文件是否是目录并获取文件大小。问题是,在获取大文件(> 2GB)的此信息时, is_dir 和 filesize 需要很长时间。有没有有效的方法来做到这一点?在我的示例代码中,我注释掉了 filesize 和 is_dir,然后几秒钟后我就得到了数组。否则需要永远。
$files=array();
$directory=opendir($dir);
while ($file = readdir($directory)) {
if($file != "." && $file != ".." && $file != '$RECYCLE.BIN'){
$rec=array(
'afile'=>"{$dir}/{$file}",
'name'=>$file
);
//if(is_dir($rec['afile'])){$rec['type']='dir';}
//else{$rec['type']='file';}
//$rec['size']=filesize($rec['afile']);
$files[]=$rec;
}
}
closedir($directory);
我和你有同样的需求,并通过解决方法解决了它。
我没有检查 $file 是否是目录,而是检查文件 $file.'\..' 是否存在(注意双斜杠)。
第二种方法要快得多(至少是经验测试)。
所以你的代码可以这样重写:
$files = array();
$directory = opendir($dir);
while ($file = readdir($directory))
{
if($file != "." && $file != ".." && $file != '$RECYCLE.BIN' && file_exists($directory.'\\'.$file.'\\..') )
{
// do things...
}
}
closedir($directory);