Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > Общее

Общее Веб-разработка в целом, идеи, проекты...

Ответ
 
Опции темы
Старый 23.09.2010, 14:32   #1
Bananbl4
Нуждающийся
 
Аватар для Bananbl4
 
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений
(для 25 пользователей)
Нужен скрипт.

Привет! Ищу php-скрипт, который из определённой папки удалял файлы старше 1 месяца. Вообще есть такие?
__________________
Teeworlds 4ever!
(Offline)
 
Ответить с цитированием
Старый 23.09.2010, 19:50   #2
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Нужен скрипт.

<?php
//Не идеально, но просто
//сохранить код в файле delete_files.php
//запуск: php delete_files.php ~/logs

if( !count($argv) ) {
  die(
'No folder specified');
}
$folder rtrim($argv[1], '/');

if( !
file_exists($folder) ) {
  die(
'folder not found');
}

$dir opendir($folder);
if( !
$dir ) {
  die(
'can`t open folder');
}

$current_date strtotime(date('Y-m-d H:i:s'));
while( (
$file readdir($dir)) !== false ) {
  
$file_date filectime($file));
  if( 
intval(date('md'strtotime($current_date $file_date)) >= 130 ) {
    
unlink($folder '/' $file);
  }
}

closedir($dir);
?>

Последний раз редактировалось cyberblut, 24.09.2010 в 12:38. Причина: $handle заменил на $dir и добавил rtrim($argv[1], '/');
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Bananbl4 (24.09.2010)
Старый 24.09.2010, 12:16   #3
Bananbl4
Нуждающийся
 
Аватар для Bananbl4
 
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Нужен скрипт.

Cпасибо огроменное!

через энное время:
на денвере скрипт работь отказался, я его ужал до
<?php
$dir 
opendir('files'); 
$current_date strtotime(date('Y-m-d H:i:s')); 
while( (
$file readdir($dir)) !== false ) { 
  
$file_date filectime($file); 
  if( 
intval(date('md'strtotime($current_date $file_date)) >= 130 )) { 
    
unlink($folder '/' $file); 
  } 


closedir($dir); 
echo 
'all done'
?>
Выдаёт вот это. Warning: filectime() [function.filectime]: stat failed for archive.zip in Y:\home\test3.ru\www\delold.php on line 5
(в папке 1 архив, созданный месяц назад)
__________________
Teeworlds 4ever!
(Offline)
 
Ответить с цитированием
Старый 24.09.2010, 16:54   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Нужен скрипт.

Попробуй fileatime().
Да и учитывай что права пользователей могут влиять на эту функцию.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Bananbl4 (24.09.2010)
Старый 24.09.2010, 17:14   #5
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Нужен скрипт.

Да дело не в правах (под виндой-то) и функции.
Обрати внимание на строку
unlink($folder '/' $file); 
Где в ужатом варианте объявление переменной $folder? Соответственно файл не найден.
Должно быть не
$dir opendir('files'); 
а
$folder 'files';
$dir opendir($folder); 
Ну и мой недочёт напоследок
измени
$file_date filectime($file); 
на
$file_date filectime($folder '/' $file); 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Bananbl4 (24.09.2010)
Старый 24.09.2010, 18:57   #6
Bananbl4
Нуждающийся
 
Аватар для Bananbl4
 
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Нужен скрипт.

Вроде бы натыкал чего-то (в php ни бум-бум): ошибок не выдаёт, но не работает
<?php
$folder 
'files';
$dir opendir($folder); 
$current_date strtotime(date('Y-m-d H:i:s')); 
while( (
$file readdir($dir)) !== false ) { 
  
$file_date =  filectime($folder '/' $file); 
  if( 
intval(date('md'strtotime($current_date $file_date)) >= 130 )) { 
    
unlink($folder '/' $file); 
  } 


closedir($dir); 
echo 
'all done'
?>
__________________
Teeworlds 4ever!
(Offline)
 
Ответить с цитированием
Старый 26.09.2010, 17:49   #7
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Нужен скрипт.

А как запускаешь?
1. Директория files лежит в той же директории, где и скрипт?
2. Запускаешь из командной строки или через апач?
3. Если из командной строки, находишься при запуске в той же директории, что и скрипт?
Смысл в том, что в твоём варианте пути получаются относительными, потому есть шанс, что 'files' не найдена. Поставь echo внутри цикла для дебага, выведи пути файлов, которые будут удаляться... По коду-то всё ок должно быть.
(Offline)
 
Ответить с цитированием
Старый 02.10.2010, 07:42   #8
Bananbl4
Нуждающийся
 
Аватар для Bananbl4
 
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Нужен скрипт.

1. Ага.
2. Не знаю, через Денвер.
3. Не знаю.
Попробую...
UPD: все отлично работает, спасибо огромное!
__________________
Teeworlds 4ever!

Последний раз редактировалось Bananbl4, 03.10.2010 в 13:04.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 19:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com