ホームページ  >  記事  >  バックエンド開発  >  PHPディレクトリイテレータRecursiveDirectoryIteratorの効率を向上させる方法

PHPディレクトリイテレータRecursiveDirectoryIteratorの効率を向上させる方法

WBOY
WBOYオリジナル
2016-06-23 13:55:051042ブラウズ

イテレータメソッド
echo 'プログラム開始時刻:'.time().'
';
$path = 'd:/www';
echo ' プログラムend time: '.time().'
';
exit;
echo '

'; 
//現在のパスの下にあるすべてのディレクトリとファイル名を取得します
//この使用法は主に次の場合に使用されます。リモートサーバーディレクトリを取得するための B/S プログラム
var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path))));
exit;

//現在のパスの下にあるすべてのディレクトリとファイルを反復的に取得します
function getRevDir( $path , $level = 0){
$dirIterator = new RecursiveDirectoryIterator($path);
$strSplitBar = '';
for($i=0;$i<$level;$i++){
if($i == $level-1){
$strSplitBar .= '|__';
}else{
$strSplitBar .= ' ';
}
}
foreach ($dirIterator as $key => $ fileInfo) {
if($dirIterator->hasChildren()){
$dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1);
echo $strSplitBar.$dirName.'
' ; getRevDir($key, $level+1);
}else{
echo $strSplitBar.basename($key).'
';
}
}
}
プログラム開始時刻: 1402624676
プログラム終了時刻: 1402624682

opendir メソッド
echo 'プログラム開始時刻:'.time().'
';
$path = 'd:/www'
getRevDir($ path); ;
echo 'プログラム終了時刻:'.time().'
'
echo '
' 
//現在のパスの下にあるすべてのディレクトリとファイル名を取得します。使用法は主にリモートサーバーディレクトリを取得するために B/S プログラムで使用されます
var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path))));
exit

//現在のパスとファイルの下にあるすべてのディレクトリを反復的に取得します
関数getRevDir($path, $level = 0){
$dirIterator = new RecursiveDirectoryIterator($path);
$strSplitBar = '';
if( $i == $level-1){
$strSplitBar .= '|__';
}else{
$strSplitBar .= '  '
}
}
foreach ($dirIterator as $key => ; $fileInfo){
if($dirIterator->hasChildren()){
$dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1); ' getRevDir($key, $level+1);
}else{
echo $strSplitBar.basename($key).'
'

実行結果
時刻: 1402624679
プログラム終了時刻: 1402624682
時差は膨大です




ディスカッションへの返信 (解決策)

ウェブサイトのディレクトリ全体を横断するのにかかる時間はわずか 3 秒で、十分な速さです

横断の効率それでおしまい。
ディレクトリ ツリーを取得して処理するには、Linux コマンドを使用する必要がありますか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。