Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление старых папок и файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tim12
Отправлено: 01 Ноября, 2018 - 21:03:17
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2018  


Помог: 0 раз(а)




Подскажите, есть рабочий скрипт, который удаляет все файлы и папки в указанной директории, как переделать данный скрипт, чтобы в нем перед удалением проверялся возраст папок в указанной директории и если папке более 10 дней, то удалялись все файлы в этой папке и сама папка
PHP:
скопировать код в буфер обмена
  1.  
  2. function fullRemove_ff($path,$t="1") {
  3.     $rtrn="1";
  4.     if (file_exists($path) && is_dir($path)) {
  5.         $dirHandle = opendir($path);
  6.         while (false !== ($file = readdir($dirHandle))) {
  7.             if ($file!='.' && $file!='..') {
  8.                 $tmpPath=$path.'/'.$file;
  9.                 chmod($tmpPath, 0777);
  10.                 if (is_dir($tmpPath)) {
  11.                     fullRemove_ff($tmpPath);
  12.                 } else {
  13.                     if (file_exists($tmpPath)) {
  14.                         unlink($tmpPath);
  15.                     }
  16.                 }
  17.             }
  18.         }
  19.         closedir($dirHandle);
  20.         if ($t=="1") {
  21.             if (file_exists($path)) {
  22.                 rmdir($path);
  23.             }
  24.         }
  25.     } else {
  26.         $rtrn="0";
  27.     }
  28.     return $rtrn;
  29. }
  30.  
  31.  
  32.  
  33. fullRemove_ff($_SERVER['DOCUMENT_ROOT']."/video", 0);
  34.  
 
 Top
Vladimir Kheifets
Отправлено: 02 Ноября, 2018 - 09:14:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




tim12 пишет:
....как переделать данный скрипт, чтобы в нем перед удалением проверялся возраст папок в указанной директории и если папке более 10 дней

Добрый день!
"возраст" можно проверить так:
Удачи!
 
 Top
LIME
Отправлено: 02 Ноября, 2018 - 11:10:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




А еще проще раскидывать в папки именуемые текущей датой
Еще и шардирование какоеникакое получится
 
 Top
tim12
Отправлено: 02 Ноября, 2018 - 11:45:14
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2018  


Помог: 0 раз(а)




файлы и так находятся в папках вот такого вида 2018-11-02
 
 Top
tim12
Отправлено: 02 Ноября, 2018 - 14:13:50
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2018  


Помог: 0 раз(а)




Vladimir Kheifets пишет:
tim12 пишет:
....как переделать данный скрипт, чтобы в нем перед удалением проверялся возраст папок в указанной директории и если папке более 10 дней

Добрый день!
"возраст" можно проверить так:
Удачи!


Спасибо, работает такая конструкция, вот с правкой на возраст, может кому то пригодится
PHP:
скопировать код в буфер обмена
  1. function fullRemove_ff($path,$t="1") {
  2.     $rtrn="1";
  3.     if (file_exists($path) && is_dir($path)) {
  4.         $dirHandle = opendir($path);
  5.         while (false !== ($file = readdir($dirHandle))) {
  6.             if ($file!='.' && $file!='..') {
  7.                 $tmpPath=$path.'/'.$file;
  8.                                 if(filemtime ($tmpPath) < strtotime("-10 days")){
  9.                 chmod($tmpPath, 0777);
  10.                 if (is_dir($tmpPath)) {
  11.                     fullRemove_ff($tmpPath);
  12.                 } else {
  13.                     if (file_exists($tmpPath)) {
  14.                         unlink($tmpPath);
  15.                     }
  16.                 }
  17.             }
  18.         }
  19.                 }
  20.         closedir($dirHandle);
  21.         if ($t=="1") {
  22.             if (file_exists($path)) {
  23.                 rmdir($path);
  24.             }
  25.         }
  26.     } else {
  27.         $rtrn="0";
  28.     }
  29.     return $rtrn;
  30. }
  31.  
  32.  
  33.  
  34. fullRemove_ff($_SERVER['DOCUMENT_ROOT']."/video", 0);
 
 Top
LIME
Отправлено: 02 Ноября, 2018 - 20:13:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




гора кода на ровном месте
зачем смотреть filemtime если можно одной командой удалить всю папку
впрочем если решение достаточно то ок
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB