|
Автор |
Сообщение |
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Здравствуйте Денис!
У меня такой вопрос: мой сценарий создает файлы. Каждый созданый файл мне нужен всего несколько дней, а потом я удаляю его в ручную.
Как мне удалить с помощью РНР файлы, которые были созданы 5 дней назад? |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Для этого используйте функцию filectime, возвращающую дату создания файла, например,
$C = filectime('file.php");
echo date("d M Y H:i:s",$C);
потом сравниваете с текущей датой, если разница = 5 дней или более, удаляете файл (можно использовать unlink)
Вот и все |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Денис, еще вопрос по этой теме.
Я не знаю имени файла. Имя генерируется автоматический. Можно ли использовать шаблон имени, например:
$C = filectime("директория/*.html?quot;);
echo date("d M Y H:i:s",$C);
и еще...
не могли бы превести пример как именно сравнивать даты создания файлов. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Как именно генерируется имя файла? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Я взял эту функцию с какого-то форума, она предназначина для генерации пароля, а я ее приспособил для генерации имени.
function generate()
{
$arr = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','X','Y','Z','1','2','3','4','5','6','7','8','9','0');
$number = 7;
$pass = "";
for($i = 0; $i < $number; $i++)
{
$index = rand(0, count($arr) - 1);
$pass .= $arr[$index];
}
return $pass;
}
$fileName=generate();
$ht=fopen("blanc/$fileName$num.html?quot;,"w+") or die("Ошибка, файл не создан!!!"); \\$num - это порядковый номер
fwrite($ht, $blanc);
fclose($ht); |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Я понял, имя файла у тебя случайное. Могу предложить следующие два варианта:
1) просто помещать все эти файлы в отдельный каталог, потом периодически его очищать
2) добавить к именам файла префикс, например, ff_dsfjhgerobs.php. Потом ищешь файлы по префиксу, сравниваешь даты и удаляешь ненужные файлы. У тебя есть моя книжка? Там есть пример поиска и вывода имен файлов. Только тебе вместо вывода нужно проанализировать дату и удалить. |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Да, книжка есть. "Самоучитель РНР 5" 2-ое издание. Такой пример есть на стр. 273 (если конечно Вы его имели в виду), попробую переделать его под свои нужды. Спасибо за совет. |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Да, именно его и имел в виду, если не получится, пиши, посмотрим вместе |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
Boroda
Новенький
Зарегистрирован: 09.02.2006 Сообщения: 19 Откуда: Москва
|
|
|
|
Все получилось. Спасибо Денис Вам и вашей книге.
Выкладываю эту функцию на форум, вдруг у кого из начинающих (как я ) возникнет такая же потребность.
================================
function delFile(){
$segodnya=time();
$dir=opendir("blanc/");
chdir("blanc/");
while ($d=readdir($dir)){
$C = filectime("$d");
if ($segodnya-$C > 432000) unlink("$d");
}
closedir($dir);
}
================================
Важно!!! Эта функция удаляет абсолютно любые файлы, удовлетворяющие условию, а именно удаляет файлы из директории "blanc", которые были созданы 5 суток назад с момента запуска этой функции.
Во избежание недоразумений будьте БДИТЕЛЬНЫ!!! |
|
Вернуться к началу |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|