01.07.2020
Если стоит задача сохранять логи на несколько дней и чистить более старые, очень хорошо выручает функция ниже.
Первым аргументом передаем то, что хотим записать, вторым название файла для записи, третьим количество дней которые храним наши логи.
В итоге в определенной папке будут для каждого дня сохранятся логи в отдельный файл, а после старые удаляться. Так же для удобства в каждую запись ставим текущую дату и время.
function saveLogSomeDays($toWrite = false, $logName = "", $days = 3)
{
if(empty($logName) || empty($toWrite))
return false;
$days = (int) $days;
$dateTime = date("d.m.Y H:i:s");
$dir = $_SERVER['DOCUMENT_ROOT'].'/ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ_ЛОГИ/'.$logName.'/';
if(!file_exists($dir))
mkdir($dir, 0777, "true");
// Записываем информацию в файл текущего дня
$fileName = $logName ."__". date("Y-m-d") . ".log";
$fp = fopen ($dir . $fileName, "a");
fwrite($fp, "Дата/время: ".$dateTime."\n\n");
fwrite($fp, print_r($toWrite, true)."\n\n");
fwrite($fp, "-----------------------------\n\n");
fclose($fp);
// Пройдемся по файлам папки, если файл старше $days дней, удалим его
foreach (glob($dir."*") as $file)
{
if(time() - filectime($file) > (86400 * $days)) {
unlink($file);
}
}
}