PHPディレクトリイテレータRecursiveDirectoryIteratorの効率を改善する方法

WBOY
リリース: 2016-06-13 12:00:26
オリジナル
1090 人が閲覧しました

PHP ディレクトリ イテレータの効率を向上させる方法 RecursiveDirectoryIterator
Iterator メソッド
echo 'プログラム開始時刻:'.time().'
';
$path = ' d:/www';
getRevDir($path);
echo 'プログラム終了時刻:'.time().'
';
exit
echo '< pre> ;';
//現在のパスの下にあるすべてのディレクトリとファイル名を取得します
//この使用法は主に 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 ' プログラム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 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).'
';
}
}
}

実行結果
プログラム開始時刻: 1402624679
プログラム終了時刻: 1402624682
時差がすごいです。
-----解決策---------- -- --------
Web サイトのディレクトリ全体を走査するのにかかる時間はわずか 3 秒で、十分な速度です
------解決策------ ----------------
トラバースの効率はこんな感じです。
Linux コマンドを使用してディレクトリ ツリーを取得し、それを処理しますか?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート