1

サーバー全体のすべてのフォルダーから error_log、.DS_Store などのファイルを削除するための PHP スクリプトがいくつかあります。これらのスクリプトをルート (public_html) にアップロードし、少しクリーンアップしたいときに定期的にアクセスするだけです。スクリプトがロードされている URL にアクセスすると、自動的に機能します。それはすべて完璧で、私はそれを使い続けたいと思っています.

ただし、この自動化を 1 つのスクリプトに統合して、望ましくないファイルの配列を次のように一覧表示できるようにしたいと考えています。

$unwanted_filenames = array(
'.DS_Store',
'.localized',
'Thumbs.db',
'error_log'
);

そして、すべてのフォルダーを実行して、配列にリストしたすべてのファイルを削除するだけです。

私が現在使用しているスクリプトはやり過ぎで、個々のファイルや解放されたファイルの量などを一覧表示しています。

そのため、ページにアクセスすると、自動的に機能するようになり、何もない白い画面で問題なく、単純に「完了しました。3MB を解放しました」と表示されます。メッセージ。それでおしまい。

4

2 に答える 2

2

わかりました-これが最短ですが、私が考えることができるPHPはそれで十分です:

$unwanted_filenames = array(
    '.DS_Store',
    '.localized',
    'Thumbs.db',
    'error_log'
    );
$it = new RecursiveDirectoryIterator("/");  // Set starting directory here
foreach(new RecursiveIteratorIterator($it) as $file) {
    if (in_array(basename($file), $unwanted_filenames)) {
        @unlink($file);  // THe @ hides errors, remove if you want to see them
    }
}

うまくいけば自明です-そして、はい、それはサブディレクトリを行います(それは「再帰的」ビットです)。

そして、最小主義と言ったので、解放されたスペースは含めませんでしたが、追加したい場合は、リンク解除の前に $FreedSpace += filesize($file) を追加するだけです。

于 2012-06-02T13:40:10.860 に答える