ユーザーがアップロードしてから 1 か月以上経過したファイルは、毎日サーバーから削除されます。ユーザーのアップロードは、日ごとにディレクトリ (例: /var/www/media/2013-03-13
) に保存されるため、削除する必要があるファイル/ディレクトリを簡単に特定できます。
問題:一度に 100,000 個のファイルを削除すると、サーバーが応答しなくなり、時間がかかります。(ソフトウェア RAID1 に 2x2TB ext4 SATA3 hdd を搭載した Ubuntu 12.04)。現時点では、PHP はexec
コマンドで実行していfind /path/to/dir -maxdepth 1 -name '*' -delete
ます。
削除に必要なファイルを分割するにはどうすればよいですか? これらの大きなディレクトリでは、実行ls
に非常に時間がかかります。
ソリューションは PHP である必要はありません。ファイルを小さなバッチに分割する必要さえありません