PHP:递归和快速列出文件夹中的所有文件
问题描述:
我正在寻找以最快的方式递归扫描所有现有文件和文件夹的目录。PHP:递归和快速列出文件夹中的所有文件
实施例:
- images
-- image1.png
-- image2.png
-- thumbnails
--- thumb1.png
--- thumb2.png
- documents
-- test.pdf
应返回:
- 图像/ image1.png
- 图像/ image2.png
- 图像/缩略图/ thumb1.png
- 图像/缩略图/ thumb2.png
- documents/test.pdf
所以我开始:
$filesandfolders = @scandir($path);
foreach ($filesandfolders as $f){
if(is_dir($f)){
//this is a folder
} else {
//this is a file
}
}
但它最快的方式?
答
你可以使用RecursiveDirectoryIterator
- 但我怀疑,它比一个简单的recusive函数更快。
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/folder'));
foreach ($iterator as $file) {
if ($file->isDir()) continue;
$path = $file->getPathname();
}
大多数情况下,代码不是最慢的,而是存储硬件。换句话说:代码的运行速度比快速的代码还要多。 –
你可能也想检查这个http://php.net/manual/en/function.glob.php – Edwin
如果树命令可用,你可以使用它。 –