ホームページ > バックエンド開発 > PHPチュートリアル > パフォーマンスの問題を発生させずに PHP でファイルとフォルダーを再帰的に検索するにはどうすればよいですか?

パフォーマンスの問題を発生させずに PHP でファイルとフォルダーを再帰的に検索するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-25 21:17:27
オリジナル
155 人が閲覧しました

How Can I Recursively Find Files and Folders in PHP Without Performance Issues?

PHP を使用した再帰的なファイルとフォルダーの検索

ディレクトリの内容とすべてのサブディレクトリを走査するには、再帰関数が使用されます。ただし、提供されたコードにはパフォーマンスの問題があり、ブラウザの速度が大幅に低下します。

問題

関数は「.」を除外しません。再帰呼び出しにより、".." ディレクトリが削除され、無限ループと実行速度の低下につながります。

修正

この問題に対処するために、コードを次のように変更しました。

function getDirContents($dir, &$results = array()) {
    $files = scandir($dir);

    foreach ($files as $key => $value) {
        $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
        if (!is_dir($path)) {
            $results[] = $path;
        } else if ($value != "." && $value != "..") {
            getDirContents($path, $results);
            $results[] = $path;
        }
    }

    return $results;
}
ログイン後にコピー

「.」の除外と「..」

「.」を除外する条件を追加しました。再帰呼び出しからの「..」ディレクトリ。これらのディレクトリはそれぞれ現在のディレクトリと親ディレクトリを表し、これらを含めると無限ループが作成されます。

使用法

関数を使用するには、単にディレクトリへのパスを指定します。トラバースしたいディレクトリ:

var_dump(getDirContents('/xampp/htdocs/WORK'));
ログイン後にコピー

このコードは、指定されたディレクトリ内のファイルとフォルダーの完全なリストを含む配列を返します。ディレクトリ。各エントリはファイルまたはフォルダーへのフルパスになります。

以上がパフォーマンスの問題を発生させずに PHP でファイルとフォルダーを再帰的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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