Home  >  Article  >  Backend Development  >  php 目录迭代器 RecursiveDirectoryIterator 怎么提高效率

php 目录迭代器 RecursiveDirectoryIterator 怎么提高效率

WBOY
WBOYOriginal
2016-06-13 12:00:261057browse

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>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn