1. Go to this page and download the library: Download ardabeyazoglu/php-retention library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ardabeyazoglu / php-retention example snippets
// define retention policy (UTC timezone)
$retention = new PhpRetention\Retention([
"keep-daily" => 7,
"keep-weekly" => 4,
"keep-monthly" => 6,
"keep-yearly" => 2
]);
// customize finder logic if ) {});
// apply retention in given directory (this WILL PRUNE the files!)
$result = $retention->apply("/path/to/files");
print_r($result);
// get list of files from ftp
$rets->setFindHandler(function (string $targetDir) use ($ftpConnection) {
$files = [];
$fileList = ftp_mlsd($ftpConnection, $targetDir) ?: [];
foreach ($fileList as $file) {
$filename = $file['name'];
$time = (int) $file['modify'];
if (preg_match('/^backup_\w+\.zip$/', $filename)) {
$date = new DateTimeImmutable('now', new DateTimeZone('UTC'));
$date = $date->setTimestamp($time);
$filepath = "$targetDir/$filename";
$files[] = new FileInfo(
date: $date,
path: $filepath,
isDirectory: false
);
}
}
return $files;
});
// assume the files waiting for retention have this format: "[email protected]"
$ret->setTimeHandler(function (string $filepath, bool $isDirectory) {
if (preg_match('/^backup@([0-9]{4})([0-9]{2})([0-9]{2})\.zip$/', basename($filepath), $matches)) {
$year = intval($matches[1]);
$month = intval($matches[2]);
$day = intval($matches[3]);
$date = new DateTimeImmutable('now', new DateTimeZone('UTC'));
$date = $date->setDate($year, $month, $day)->setTime(0, 0, 0, 0);
return new FileInfo(
date: $date,
path: $filepath,
isDirectory: $isDirectory
);
}
else {
return null;
}
});
$ret->setPruneHandler(function (FileInfo $fileInfo) use ($ftpConnection) {
ftp_delete($ftpConnection, $fileInfo->path);
});
// group different types of backups based on tenant and date and prune them together
$ret->setGroupHandler(function (string $filepath) {
if (preg_match('/\-([0-9]{8})\.tar\.gz$/', $filepath, $matches)) {
// group by date str
return $matches[1];
}
return null;
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.