【发布时间】:2017-09-04 13:03:59
【问题描述】:
我正在寻找递归扫描目录以查找所有现有文件和文件夹的最快方法。
例子:
- images
-- image1.png
-- image2.png
-- thumbnails
--- thumb1.png
--- thumb2.png
- documents
-- test.pdf
应该返回:
- images/image1.png
- images/image2.png
- 图像/缩略图/thumb1.png
- 图像/缩略图/thumb2.png
- 文档/test.pdf
所以我会开始:
$filesandfolders = @scandir( $path );
foreach ($filesandfolders as $f){
if(is_dir($f)){
//this is a folder
} else {
//this is a file
}
}
但这是最快的方式吗?
【问题讨论】:
-
大多数时候最慢的不是代码,而是存储硬件。换句话说:运行速度比快的代码没有什么好处。
-
你可能也想检查一下php.net/manual/en/function.glob.php
-
如果树命令可用,您可以使用它。
-
磁盘访问总是成为此类任务的瓶颈。如果您可以考虑将结果缓存在内存中,那么您将看到显着的改进。