0
我想使用函数从所有目录和子目录中获取所有文件名,大小,路径。我已经使用递归函数完成了相同的操作。这是我的代码。从目录和子目录中获取所有文件,大小,路径php
function scan_dir($path, $exclude){
$ite = new RecursiveDirectoryIterator($path);
$bytestotal=0;
$nbfiles=0;
$file_data = array();
$i= 0;
foreach (new RecursiveIteratorIterator($ite,RecursiveIteratorIterator::CHILD_FIRST) as $filename => $cur) {
if ($cur->isDir())
{
continue ;
}
$files = str_replace('\\','/', $filename);
$filesize = $cur->getSize();
$exclude = array_filter($exclude);
$data = array('name'=>$files, 'path'=>$cur->getPath(),'size'=>$cur->getSize());
$file_data[] = $data;
$i++;
$nbfiles++;
$bytestotal += $filesize;
}
$bytestotal = $bytestotal;
return array('total_files'=> $nbfiles, 'total_size' => $bytestotal, 'files'=> $file_data);
}
问题是当我在linux服务器上运行我的代码时,由于递归函数,它运行缓慢。请我可以有相同的替代,因为我可以得到相同的输出,但使用不同的功能。
我想添加一个如果其他部分即检查服务器,如果是Linux的然后{}其他{递归函数} 任何帮助非常感谢。
单独用于Linux的检查将不会削减它。速度通常是因为树的深度/大小和底层文件系统。也许你需要减少深度(使用递归迭代器,你可以控制深度http://www.php.net/recursiveiteratoriterator.setmaxdepth) – hakre