2014-01-28 5 views
2

У меня есть папка, которая содержит файлы с именамиУдаление 3 дня старый файл из папки в PHP

2014-01-28_backup.txt 
2014-01-25_backup.txt 
2014-01-26_backup.txt 
2014-01-27_backup.txt 

Я хочу, чтобы создать скрипт, который удаляет 3 дня старый файл, так что если я бегу сценарий на 2014- 01-29, он должен удалить все файлы до 26. я видел функцию под названием Glob и ScanDir, но не уверен, как получить, что в

+0

Тот, кто голосует, чтобы закрыть, пожалуйста, напишите комментарий как wellThnks –

+0

@SamiraKhorshidi Я не принял какой-либо, что было чисто ошибка .. –

+0

вы не могли бы использовать LogRotate для этого? –

ответ

1

Попробуйте это,

$threeDbefore = date("Y-m-d", strtotime("-3 days")); 
foreach(glob("path/to/files/*") as $file) { 
    if (!is_file($file)) { 
     continue; 
    } 
    $fileParts = explode('_', basename($file)); 
    if(!empty($fileParts[0]) && $fileParts[0] <= $threeDbefore) { 
     unlink($file); 
    } 
} 

Это будет также удалять файлы до 3-х дней, а не только точно 3 дней. то есть он будет удалять '2014-01-24_backup.txt и 2014-01-23_backup.txt т.д.

1

конечно папка и файлы должны иметь разрешение на запись (chmod 777)

foreach (glob("path/to/files/*") as $file) { 
    if(substr(basename($file), 0, 10) <= date("Y-m-d",strtotime("-3 days"))) 
    unlink($file); 
} 
+0

Fllah не должен искать _backup.txt? –

+0

не все ваши файлы с именем ... '_backup.txt'? –

+0

да все файлы имеют этот шаблон в конце –