假设我们有一个这样的循环:
foreach($entries as $entry){ // let's say this loops 1000 times
if (file_exists('/some/dir/'.$entry.'.jpg')){
echo 'file exists';
}
}
我假设这必须访问 HDD 1000 次并检查每个文件是否存在。
不如这样做呢?
$files = scandir('/some/dir/');
foreach($entries as $entry){ // let's say this loops 1000 times
if (in_array($entry.'.jpg', $files)){
echo 'file exists';
}
}
问题1:如果这访问硬盘一次,那么我相信它应该会快很多。我是对的吗?
但是,如果我必须检查文件的子目录怎么办,如下所示:
foreach($entries as $entry){ // let's say this loops 1000 times
if (file_exists('/some/dir/'.$entry['id'].'/'.$entry['name'].'.jpg')){
echo 'file exists';
}
}
问题2:如果我想应用上述技术(数组中的文件)来检查条目是否存在,我如何将scandir()
子目录放入数组中,以便我可以使用这种方法比较文件是否存在?