シンプルな素朴なバージョン:
$yesterday = date('Y-m-d', strtotime('yesterday')); // 2011-10-17
$day_before = date('Y-m-d', strtotime('2 days ago')); // 2011-10-16
$images = glob('*.jpg');
foreach($images as $img) {
if (strpos($img, $yesterday) === 0) || (strpos($img, $day_before) === 0)) {
continue;
}
unlink($img);
}
これにより、ファイルの日付が昨日または一昨日かどうかを確認して、3 日以上前の日付のすべてのファイルが削除されます。ただし、今日作成されたすべてのファイルも削除されます。
より良いバージョンは次のとおりです。
$images = glob("*.jpg");
foreach ($images as $img) {
$ctime = filectime($img);
if ($ctime < (time() - 86400 * 2)) {
unlink($img);
}
}
このバージョンは、ファイルの実際の最終変更時刻をチェックし、48 時間より古いものをすべて削除します。ただし、filectime() によって実行される stat() 呼び出しは安価ではない呼び出しになるため、遅くなります。