Heim >Backend-Entwicklung >PHP-Tutorial >php 目录迭代器 RecursiveDirectoryIterator 怎么提高效率

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

WBOY
WBOYOriginal
2016-06-13 12:00:261109Durchsuche

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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn