Размещено: 2023-12-19 19:11:17
Теги: php
УДАЛЕНИЕ ЛОГОВ, ВРЕМЕННЫХ ФАЙЛОВ
/* ================================== clear_logs ======================================================================================================= { Функция для удаления логов, временных файлов, и всего того, что не нужно хранить больше чем сутки ===================================================================================================================================================== */ function clear_logs($path) { foreach(glob($path) as $dir) { if(is_dir($dir)) { //папки не трогаем, доходим рекурсивно до самих файлов call_user_func(__FUNCTION__,$dir.'/*'); } else { //разница от текущего времени до времени последнего редактирования, переводим в часы $edit_time=(time()-filectime($dir))/3600; //попадают под удаление в скором времени echo '---------info: '.$dir.'---'.$edit_time.'<br>'; //все что старше 24 часов - удаляем if($edit_time>24 && unlink($dir)) { echo 'delete: '.$dir.'<br>'; } } } } // } =============================== end clear_logs =================================================================================================== //Папка в которой находятся файлы относительно корневого clear_logs($_SERVER['DOCUMENT_ROOT'].'/logs/*'); //Либо папка в которой находятся файлы относительно текущего каталога //clear_logs('../logs/*');
Немая рекурсивная функция
Если нужно просто вывести список файлов в какой-либо папке и во вложенных папках в ней, то можно написать очень простую функцию с глобальной переменной. Назовем этот способ или методику как немая рекурсивная функция. В данном случае написать функцию, которая будет просто писать массив где-то в "бэкграунде" в виде глобальной переменной или с помощью буферизации значительно проще, и понятнее, чем писать функцию, которая будет как-то сливать массивы, передавать список файлов из функции в функцию. Можно запутаться. А такая методика это фактически тоже самое что просто вывод с помощью echo, но с записью в переменную.
/* ================================== get_files ==================================================================================================== { "немая" функция, пишет в глобальную переменную список всех файлов, которые содержатся в папке и во вложенных в неё папках список файлов после её работы будет находится в глобальной переменной $get_files (переменной присваивается имя функции) ИСПОЛЬЗОВАНИЕ: //перезадаем переменную каждый раз перед выводом функции $get_files=array(); //функция пишет список файлов в переменную, сама ничего не выводит get_files('../logs/*'); //а список файлов после её работы будет в глобальной переменной $get_files print_r($get_files); ===================================================================================================================================================== */ function get_files($path) { foreach(glob($path) as $dir) { if(is_dir($dir)) call_user_func(__FUNCTION__,$dir.'/*'); else { global ${__FUNCTION__}; ${__FUNCTION__}[]=$dir; } } } // } =============================== end get_files ================================================================================================= $get_files=array(); get_files('../logs/*'); print_r($get_files);
На эту страницу чаще всего попадают по запросам: удаление логов, удалить временные, удалить логи, очистить логи, поиск, удалить старые, время редактирования, время последнего редактирования файла, очистить старые файлы, удалить старые, рекурсия, рекурсивно, рекурсивная, рекурсивно вызвать саму функцию, сама себя, вызывает, искать, ищет файлы, глобальная переменная, область видимости переменной