Форумы портала PHP.SU » PHP » Программирование на PHP » Удаление старых папок и файлов

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

1. tim12 - 01 Ноября, 2018 - 21:03:17 - перейти к сообщению
Подскажите, есть рабочий скрипт, который удаляет все файлы и папки в указанной директории, как переделать данный скрипт, чтобы в нем перед удалением проверялся возраст папок в указанной директории и если папке более 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.  
2. Vladimir Kheifets - 02 Ноября, 2018 - 09:14:27 - перейти к сообщению
tim12 пишет:
....как переделать данный скрипт, чтобы в нем перед удалением проверялся возраст папок в указанной директории и если папке более 10 дней

Добрый день!
"возраст" можно проверить так:
Удачи!
3. LIME - 02 Ноября, 2018 - 11:10:00 - перейти к сообщению
А еще проще раскидывать в папки именуемые текущей датой
Еще и шардирование какоеникакое получится
4. tim12 - 02 Ноября, 2018 - 11:45:14 - перейти к сообщению
файлы и так находятся в папках вот такого вида 2018-11-02
5. tim12 - 02 Ноября, 2018 - 14:13:50 - перейти к сообщению
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);
6. LIME - 02 Ноября, 2018 - 20:13:30 - перейти к сообщению
гора кода на ровном месте
зачем смотреть filemtime если можно одной командой удалить всю папку
впрочем если решение достаточно то ок

 

Powered by ExBB FM 1.0 RC1