php 目录迭代器 RecursiveDirectoryIterator 如何提高效率
迭代器方式
echo '程序开始时间:'.time().'
';
$path = 'd:/www';
getRevDir($path);
echo '程序结束时间:'.time().'
';
exit;
echo '
';<br> //获取当前路径下所有的目录和文件名<br> //这种用法主要是用在获取远程服务器目录的B/S程序中<br> var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path)))); <br> exit;<br> <br> //迭代获取当前路径下所有的目录和文件<br> function getRevDir($path, $level = 0){<br> $dirIterator = new RecursiveDirectoryIterator($path);<br> $strSplitBar = '';<br> for($i=0;$i if($i == $level-1){<br> $strSplitBar .= '|__';<br> }else{<br> $strSplitBar .= ' ';<br> }<br> } <br> foreach ($dirIterator as $key => $fileInfo){<br> if($dirIterator->hasChildren()){ <br> $dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1);<br> echo $strSplitBar.$dirName.'<br>';<br> getRevDir($key, $level+1);<br> }else{ <br> echo $strSplitBar.basename($key).'<br>';<br> } <br> }<br> }<br>执行结果<br>程序开始时间:1402624676<br>程序结束时间:1402624682<br><br>opendir 方式<br><?php <br /> echo '程序开始时间:'.time().'<br>';<br> $path = 'd:/www';<br> getRevDir($path);<br> echo '程序结束时间:'.time().'<br>';<br> exit; <br> echo '<pre class="brush:php;toolbar:false">';<br> //获取当前路径下所有的目录和文件名<br> //这种用法主要是用在获取远程服务器目录的B/S程序中<br> var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path)))); <br> exit;<br> <br> //迭代获取当前路径下所有的目录和文件<br> function getRevDir($path, $level = 0){<br> $dirIterator = new RecursiveDirectoryIterator($path);<br> $strSplitBar = '';<br> for($i=0;$i if($i == $level-1){<br> $strSplitBar .= '|__';<br> }else{<br> $strSplitBar .= ' ';<br> }<br> } <br> foreach ($dirIterator as $key => $fileInfo){<br> if($dirIterator->hasChildren()){ <br> $dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1);<br> echo $strSplitBar.$dirName.'<br>';<br> getRevDir($key, $level+1);<br> }else{ <br> echo $strSplitBar.basename($key).'<br>';<br> } <br> }<br> }<br><br>执行结果<br>程序开始时间:1402624679<br>程序结束时间:1402624682<br>时间相差好大.<br><font color="#FF8000">------解决方案--------------------</font><br>遍历整个网站目录才 3 秒钟,够快的了<br><font color="#FF8000">------解决方案--------------------</font><br>遍历的效率也就这样了吧。<br>要不用Linux命令获取目录树再处理看看。<div class="clear"> </div>