時間が経過し、ファイルが継続的に操作されると、サーバー上に多数の空のフォルダーが蓄積される可能性があります。過剰なディスク領域を占有することはありませんが、ファイル システムのパフォーマンスとクリーン度に影響を与える可能性があります。したがって、これらの空のフォルダーを定期的にクリアする必要があります。
この記事では、PHP を使用して空のフォルダーをクリアするプログラムを作成する方法を紹介します。
まず、チェックおよびクリアする必要があるすべてのフォルダーをリストする必要があります。 PHP の scandir()
関数を使用して、ターゲット ディレクトリ内のすべてのファイルとフォルダーのリストを取得できます。
function getDirs($dir) { $dirs = array_diff(scandir($dir), array(".", "..")); return $dirs; }
上記の関数は、ターゲット ディレクトリを走査し、現在のディレクトリ (「.」) と前のディレクトリ (「..」) を含まないフォルダー リストを返します。
各フォルダーが空かどうかを確認する必要があります。 PHP の glob()
関数を使用すると、フォルダー内のすべてのファイルを取得し、フォルダー内に他のファイルがあるかどうかを確認できます。ファイルがない場合は空としてマークされ、後で削除できます。
function isEmpty($dir) { $isEmpty = true; $files = glob($dir.'/*'); foreach ($files as $file) { if (is_dir($file)) { $isEmpty = false; // 如果有任何子文件夹则不是空文件夹 } else { $isEmpty = false; } } return $isEmpty; }
この関数は、フォルダーが空かどうかを示すブール値を返します。
フォルダーとそのサブフォルダーを再帰的に走査して、空のフォルダーをすべて見つける必要もあります。上で書いた getDirs()
関数を使用してフォルダーのリストを取得できます。フォルダーごとに、それが空かどうかを確認し、空の場合は空のフォルダー リストに追加します。
function getEmptyDirs($dir) { $emptyDirs = array(); $dirs = getDirs($dir); foreach ($dirs as $d) { $subdir = $dir.'/'.$d; if (is_dir($subdir)) { if (isEmpty($subdir)) { $emptyDirs[] = $subdir; } else { $subdirs = getEmptyDirs($subdir); if (!empty($subdirs)) { $emptyDirs = array_merge($emptyDirs, $subdirs); } } } } return $emptyDirs; }
この関数は、フォルダーを再帰的に繰り返し、各サブフォルダーが空かどうかを確認することにより、すべての空のフォルダーのリストを返します。
最後に、空のフォルダーを削除する関数を作成する必要があります。 PHP の rmdir()
関数を使用してフォルダーを削除できます。ただし、この関数は空のディレクトリでのみ呼び出すことができるため、最初にフォルダーが空かどうかを確認する必要があります。そうでない場合は、フォルダーを削除できません。 unlink()
関数とループ ステートメントを使用して、空ではないディレクトリとその内容を削除することもできます。
function deleteEmptyDirs($dir) { $emptyDirs = getEmptyDirs($dir); foreach ($emptyDirs as $emptyDir) { if (is_dir($emptyDir)) { rmdir($emptyDir); echo "Deleted empty directory: ".$emptyDir."\n"; } } }
上記の関数は、削除された各空のフォルダーのパスを出力します。
function getDirs($dir) { $dirs = array_diff(scandir($dir), array(".", "..")); return $dirs; } function isEmpty($dir) { $isEmpty = true; $files = glob($dir.'/*'); foreach ($files as $file) { if (is_dir($file)) { $isEmpty = false; // 如果有任何子文件夹则不是空文件夹 } else { $isEmpty = false; } } return $isEmpty; } function getEmptyDirs($dir) { $emptyDirs = array(); $dirs = getDirs($dir); foreach ($dirs as $d) { $subdir = $dir.'/'.$d; if (is_dir($subdir)) { if (isEmpty($subdir)) { $emptyDirs[] = $subdir; } else { $subdirs = getEmptyDirs($subdir); if (!empty($subdirs)) { $emptyDirs = array_merge($emptyDirs, $subdirs); } } } } return $emptyDirs; } function deleteEmptyDirs($dir) { $emptyDirs = getEmptyDirs($dir); foreach ($emptyDirs as $emptyDir) { if (is_dir($emptyDir)) { rmdir($emptyDir); echo "Deleted empty directory: ".$emptyDir."\n"; } } } // 用例 $targetDir = "/path/to/target/directory"; deleteEmptyDirs($targetDir);
上記の方法を使用すると、サーバー内の空のフォルダーを定期的にクリーンアップできます。ファイル システム全体のパフォーマンスとクリーン度が向上します。さらに、空のフォルダーが蓄積してファイル システムのパフォーマンスに影響を与えないように、このスクリプトを定期的に実行するように設定できます。
以上がPHPで空のフォルダーをクリアするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。