автоматическое удаление файлов

Статус
Закрыто для дальнейших ответов.

vlastelin

Well-Known Member
Регистрация
29.12.2006
Сообщения
107
Я создаю один сайтик, и вообщем сделал в нем следующее: каждый зашедший посетитель может добавить свою картинку. А как сделать чтобы эта картинка сама удалялась через например 2 недели или месяц? Может есть какието php скрипты которые удаляют заданные типы файлов в специальной папке?
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
cron вам в помощь для планирования задания
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
cron — планировщик задач, демон в Юникс-образных операционных системах для периодического выполнения заданий в заданное время.

Каждый пользователь системы имеет свой файл заданий crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноименная программа crontab. Это сделано для того, чтобы во время редактирования cron мог продолжать работу.
(С) Википедия

Как его администрировать на вашем хостинге обычно можно узнать в часто задаваемых вопросах или техподдержке
 

sciko

Well-Known Member
Регистрация
22.12.2006
Сообщения
164
Для тех у кого его нет вариант:
вставка в файл, который создаёт картинки, запрос в базу данных о всех файлах с датой больше положенной и удаление их;
создание картинки;
запись в базу данных данных картинки (включая дату).
 

vlastelin

Well-Known Member
Регистрация
29.12.2006
Сообщения
107
Для тех у кого его нет вариант:
вставка в файл, который создаёт картинки, запрос в базу данных о всех файлах с датой больше положенной и удаление их;
создание картинки;
запись в базу данных данных картинки (включая дату).
Всмысле запрос в базу данных? У меня все без БД работает.
Если скину php скрипт, которым я пользуюсь, посмотрите что куда нужно добавить? :rolleyes:
 

sciko

Well-Known Member
Регистрация
22.12.2006
Сообщения
164
Не дали на хостинге БД? Тогда пиши всю инфу в файл и его используй как таблицу.
Если скину php скрипт, которым я пользуюсь, посмотрите что куда нужно добавить?
Посмотрю. Но я и так могу сказать, что ставить надо в указанном порядке...
 

~FisHBonE~

Well-Known Member
Регистрация
23.05.2005
Сообщения
136
Все можно сделать и без Crona. Просто когда заливается новый файл на сервер, скрипт проходит все файлы в данной папке, смотрит дату и время создания и, если файлу больше 2-ч недель, удаляет его.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
~FisHBonE~ пожалейте сервер, зачем грузить его лишней работой??
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Medwoodu, я думаю, за 2 недели файлов накопится не так уж много, пройти их все возможно и сервер загружается не часто.
Если конечно это не супер-пупер проект :) Где посетителей неимоверное множество.
Идея с удалением ~FisHBonE~ очень даже ничего
 

sciko

Well-Known Member
Регистрация
22.12.2006
Сообщения
164
У-у-у-у... Какой старый скрипт! Ещё через copy()! Тут проще новый написать. Но посмотрим, что можно сделать...
Вариант ~FisHBonE~ отличается от моего только тем, что вместо использования БД, идёт прямой опрос файлов на предмет их даты. Выводы делайте сами...
 

vlastelin

Well-Known Member
Регистрация
29.12.2006
Сообщения
107
Эм... ну так что, ктонибудь поможет? :rolleyes:
А то все замолчали как-то =(
 

sciko

Well-Known Member
Регистрация
22.12.2006
Сообщения
164
Пауза выдержена и вот ответ:

Сделай чтобы было так:
Код:
$offset_time=10000;//время существования файла
$file_name="art.art";//имя файла-БД
if (!file_exists($file_name)) die "Файл активных рисунков не существует!";
$fp = file ($file_name) or die('файл активных рисунков недоступен для записи');
 for ($i=0;$i<sizeof($f);$i++)
 {
	 list($fname,$last)=explode("::",trim($f[$i]));
	 if ($last>=$time())
	  @unlink("$ufolder".$fname);
 }

if ($_FILES['img1'] != "") {

	copy($_FILES['img1']['tmp_name'], "$ufolder".$_FILES['img1']['name'])
		or die("Couldn't copy the file!");
	$fp = fopen ($admfile,"a") or die('файл недоступен для записи');
	flock ($fp,LOCK_EX);
	$data=$_FILES['img1']['name']."::".(time()+$offset_time);
	fputs($fp ,"$data\r\n");
	fflush ($fp);
	flock ($fp,LOCK_UN);
	fclose ($fp);
} else {
	die("No input file specified");
}

?>
Это файл do_upload.php начиная со сттроки 79.
 

Alterbit

Well-Known Member
Регистрация
10.05.2005
Сообщения
78
лучше без всяких explode'ов сохранять массив с помощью serialize: ключ - время, значение - имя файла
 

sciko

Well-Known Member
Регистрация
22.12.2006
Сообщения
164
лучше без всяких explode'ов сохранять массив с помощью serialize: ключ - время, значение - имя файла
Лучше вообще этот скрипт заново переписать.
vlastelin, загляни на woweb я здесь баг нашёл...
 
Статус
Закрыто для дальнейших ответов.
Верх Низ