Недавно было необходимо на сайте, где генерировались изображения с веб-камеры каждые 20 секунд, очищать всю эту папку за исключением последних 10 файлов. Было необходимо написать всё это в связке PHP + Cron, хотя Bash скрипт + Cron сделал бы это намного быстрее, но хозяин барин. В принципе к моменту написания скрипта на сайте было 9к изображений и на их удаление потребовалось чуть больше секунды, так что ощущения длительного процесса не замечено.
А вот собственно и сам скрипт:
<?php
$dir = '/var/www/site.com/public_html/uploads'; // Указываем путь до папки с изображениями
$files = scandir($dir, SCANDIR_SORT_DESCENDING); // Получаем список файлов и сразу сортируем их по дате добавления
array_pop($files); // Удаляем точку
array_pop($files); // Удаляем две точки
$files = array_slice($files, 10); // Пропускаем первые 10 результатов массива
foreach($files as $key => $file) {
unlink($dir.'/'.$file); // Удаляем файлы
}
Комментарии ()