#!/usr/bin/env php isDot() || !$file->isFile()) { continue; } // Skip lock file and non-json files $filename = $file->getFilename(); if ($filename === '.cleanup.lock' || !str_ends_with($filename, '.json')) { continue; } $scanned++; // Check file age $fileAge = $now - $file->getMTime(); if ($fileAge > $maxAge) { $filepath = $file->getPathname(); if (@unlink($filepath)) { $deleted++; } else { $errors++; } } } } catch (Exception $e) { echo "Error during cleanup: " . $e->getMessage() . "\n"; @unlink($lockFile); exit(1); } // Release lock @unlink($lockFile); // Output results echo "Rate limit cleanup completed:\n"; echo " - Scanned: {$scanned} files\n"; echo " - Deleted: {$deleted} expired files\n"; if ($errors > 0) { echo " - Errors: {$errors} files could not be deleted\n"; } exit($errors > 0 ? 1 : 0);