нужно убить старые файлы по маске если их более 5 штук
что в этом коде не верно ???
<?php
$max_count_files = 5;
$files = array();
if (is_dir('backup/') && $handle = opendir('backup/')) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/^.+?\.sql(\.(gz|bz2))?$/", $file)) {
$prefix = explode("_", $file);
$prefix = end($prefix);
$prefix = explode(".", $prefix);
$prefix = reset($prefix);
if (strlen($prefix) == 32)
$files[] = $file;
}
}
closedir($handle);
}
sort($files);
reset($files);
if (count($files) >= $max_count_files) {
@unlink ('backup/'.$files[0]);
}
?>
Спустя 44 минуты, 33 секунды (17.10.2011 - 15:22) Guest написал(а):
PS:
названия файлов
gbua_x_qwerty_2011-10-15_11-43.sql.gz
названия файлов
gbua_x_qwerty_2011-10-15_11-43.sql.gz
Спустя 1 час, 36 минут, 40 секунд (17.10.2011 - 16:59) kovaldm написал(а):
@unlink ('backup/'.$files[0]);
Уберите собаку и текст ошибок в студию.
Спустя 18 минут, 1 секунда (17.10.2011 - 17:17) mouserok написал(а):
нашел где тупонул
нужно было закоментить
а вот тот код что преведен в первом сообщении удаляет только один раз
как в цикле убить если к примеру у нас 9 файлов(count($files)) и первые 4 нужно убить ($files[0], $files[1], $files[2], $files[3]);)
нужно было закоментить
if (strlen($prefix) == 32)
а вот тот код что преведен в первом сообщении удаляет только один раз
как в цикле убить если к примеру у нас 9 файлов(count($files)) и первые 4 нужно убить ($files[0], $files[1], $files[2], $files[3]);)
Спустя 4 минуты, 30 секунд (17.10.2011 - 17:21) Winston написал(а):
Перепиши так
Это удалит все файлы, чьи имена находятся в $files
Спустя 2 минуты, 19 секунд Winston написал(а):
Если нужно первые 4, то так перепиши
if (count($files) >= $max_count_files) {
array_map(create_function('$item', 'unlink ("backup/".$item);'), $files);
}
Это удалит все файлы, чьи имена находятся в $files
Спустя 2 минуты, 19 секунд Winston написал(а):
Если нужно первые 4, то так перепиши
if (count($files) >= $max_count_files) {
array_map(create_function('$item', 'unlink ("backup/".$item);'), array_slice($files, 4));
}
Спустя 15 минут, 6 секунд (17.10.2011 - 17:36) mouserok написал(а):
Winston
Цитата |
Это удалит все файлы, чьи имена находятся в $files |
нужно оставить последние 5 файла(свежие по дате), а 4 первые убить (старые по дате)
Спустя 39 минут, 26 секунд (17.10.2011 - 18:16) Winston написал(а):
Цитата (mouserok @ 17.10.2011 - 17:36) |
а 4 первые убить (старые по дате) |
Отсортируй массив с файлами по дате в порядке убывания, и мой код сделает, то, что нужно.
Спустя 14 часов, 19 минут, 56 секунд (18.10.2011 - 08:36) mouserok написал(а):
получилось
<?php
$max_count_files = 7;
$files = array();
if (is_dir('backup/') && $handle = opendir('backup/')) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/^.+?\.sql(\.(gz|bz2))?$/", $file)) {
$prefix = explode("_", $file);
$prefix = end($prefix);
$prefix = explode(".", $prefix);
$prefix = reset($prefix);
$files[] = $file;
}
}
closedir($handle);
}
rsort($files);
reset($files);
if (count($files) >= $max_count_files) {
array_map(create_function('$item', 'unlink ("backup/".$item);'), array_slice($files, $max_count_files));
}
?>