ЗАДАЧА:
мне нужно создать скрипт php, который будет проверять факт создания новых файлов на сервере и слать мне email через smtp, если был создан хотя бы один файл. Скрипт будет выполняться каждый час через крон, поэтому все изменения нужно находить за последний час.
// Функция для рекурсивного обхода файлов и папок function scanDirectory($directory, $oneHourAgoTimestamp, $excludedPaths) { $newFiles = []; $filesAndDirs = scandir($directory); foreach ($filesAndDirs as $fileOrDir) { $path = $directory . '/' . $fileOrDir; // Игнорируем текущий и родительский каталоги if ($fileOrDir === '.' || $fileOrDir === '..') { continue; } // Исключаем определенные файлы и папки $isExcluded = false; foreach ($excludedPaths as $excludedPath) { if (strpos($path, $excludedPath) !== false) { $isExcluded = true; break; } } if ($isExcluded) { continue; } if (is_dir($path)) { // Рекурсивно обходим вложенные папки $newFiles = array_merge($newFiles, scanDirectory($path, $oneHourAgoTimestamp, $excludedPaths)); } elseif (is_file($path) && filectime($path) >= $oneHourAgoTimestamp) { // Определение абсолютного пути к файлу $absolutePath = realpath($path); $newFiles[] = $absolutePath; } } return $newFiles; } // Пути, которые нужно исключить из поиска $excludedPaths = [ '/home/eazyway/test.eazy-way.com/storage/cache/', '/home/eazyway/test.eazy-way.com/public/admin/cron/file_change_notifi.php', '/home/eazyway/test.eazy-way.com/public/catalog/controller/feed/1c_import.log', // Добавьте другие пути, которые нужно исключить ]; // Получаем список новых файлов $newFiles = scanDirectory($directoryToMonitor, $oneHourAgoTimestamp, $excludedPaths); // Если есть новые файлы, отправляем уведомление if (!empty($newFiles)) { // ... ваш код отправки уведомления ... } else { echo 'Новых файлов за последний час не обнаружено'; }