forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общее (http://forum.boolean.name/forumdisplay.php?f=139)
-   -   Нужен скрипт. (http://forum.boolean.name/showthread.php?t=13394)

Bananbl4 23.09.2010 14:32

Нужен скрипт.
 
Привет! Ищу php-скрипт, который из определённой папки удалял файлы старше 1 месяца. Вообще есть такие? :-D

cyberblut 23.09.2010 19:50

Ответ: Нужен скрипт.
 
PHP код:

<?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);
?>


Bananbl4 24.09.2010 12:16

Ответ: Нужен скрипт.
 
Cпасибо огроменное!

через энное время:
на денвере скрипт работь отказался, я его ужал до
PHP код:

<?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 архив, созданный месяц назад)

moka 24.09.2010 16:54

Ответ: Нужен скрипт.
 
Попробуй fileatime().
Да и учитывай что права пользователей могут влиять на эту функцию.

cyberblut 24.09.2010 17:14

Ответ: Нужен скрипт.
 
Да дело не в правах (под виндой-то) и функции.
Обрати внимание на строку
PHP код:

unlink($folder '/' $file); 

Где в ужатом варианте объявление переменной $folder? Соответственно файл не найден.
Должно быть не
PHP код:

$dir opendir('files'); 

а
PHP код:

$folder 'files';
$dir opendir($folder); 

Ну и мой недочёт напоследок :)
измени
PHP код:

$file_date filectime($file); 

на
PHP код:

$file_date filectime($folder '/' $file); 


Bananbl4 24.09.2010 18:57

Ответ: Нужен скрипт.
 
Вроде бы натыкал чего-то (в php ни бум-бум): ошибок не выдаёт, но не работает :mad:
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'
?>


cyberblut 26.09.2010 17:49

Ответ: Нужен скрипт.
 
А как запускаешь?
1. Директория files лежит в той же директории, где и скрипт?
2. Запускаешь из командной строки или через апач?
3. Если из командной строки, находишься при запуске в той же директории, что и скрипт?
Смысл в том, что в твоём варианте пути получаются относительными, потому есть шанс, что 'files' не найдена. Поставь echo внутри цикла для дебага, выведи пути файлов, которые будут удаляться... По коду-то всё ок должно быть.

Bananbl4 02.10.2010 07:42

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot