Advertisement
Trigub_Ilia

Скрипт рекурсивно проводит по файлам и удаляет ненужные

Nov 28th, 2018
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.44 KB | None | 0 0
  1. <?
  2. $_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/www/";
  3. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  4.  
  5. set_time_limit(0);
  6. global $DB;
  7.  
  8. function get_files($dir = "/home/bitrix/www/upload/iblock"){
  9.     $files = array();
  10.     if ($handle = opendir($dir)) {
  11.         while (false !== ($item = readdir($handle))) {
  12.             if (is_file("$dir/$item")) {
  13.                 $files[] = "$dir/$item";
  14.             }
  15.             elseif (is_dir("$dir/$item") && ($item != ".") && ($item != "..")){
  16.                 $files = array_merge($files, get_files("$dir/$item"));
  17.             }
  18.         }
  19.         closedir($handle);
  20.     }
  21.     return $files;
  22. }
  23.  
  24. $qqqq = get_files();
  25.  
  26. $netu_failov = array();
  27. $est_faili = array();
  28.  
  29.  
  30. $est_v_baze = array();
  31. $nety_v_baze = array();
  32. $i = 0;
  33. foreach ($qqqq as $value){
  34.     $pieces = explode("/", $value);
  35.     $file_name = end($pieces);
  36.  
  37.     $query = "SELECT * FROM b_file WHERE FILE_NAME='$file_name'";
  38.     $result = $DB->Query($query);
  39.     $allCountTreoplan = $result->SelectedRowsCount();
  40.     if($allCountTreoplan != 0){
  41.         while($row = $result->GetNext())
  42.         {
  43.             $est_faili[] = "файл найден ".$row["FILE_NAME"];
  44.             $file_id = $row['ID'];
  45.  
  46.             //Ищем файл в таблице с b_iblock_element
  47.             $query_iblock = "SELECT * FROM b_iblock_element WHERE PREVIEW_PICTURE='$file_id' OR DETAIL_PICTURE='$file_id'";
  48.             $result_iblock = $DB->Query($query_iblock);
  49.             $allCountTreoplanIblock = $result_iblock->SelectedRowsCount();
  50.             if($allCountTreoplanIblock != 0){
  51.                 while($row2 = $result_iblock->GetNext()) {
  52.                     $est_v_baze[] = $row["ID"];
  53.                 }
  54.             }
  55.             else{
  56.                 $nety_v_baze[] = $row["ID"];
  57.                 if(unlink($value)){
  58.                     //echo "удалилось";
  59.                     AddMessage2Log($file_name, "Удален файл");
  60.                 }
  61.                 else{
  62.                     //echo "не удалилось";
  63.                 }
  64.             }
  65.         }
  66.     }
  67.     else{
  68.         $netu_failov[] = "файл не найден ".$file_name;
  69.         if(unlink($value)){
  70.             //echo "удалилось";
  71.             AddMessage2Log($file_name, "Удален файл");
  72.         }
  73.         else{
  74.             //echo "не удалилось";
  75.         }
  76.     }
  77.  
  78.     $i++;
  79.     if($i>20)break;
  80.     AddMessage2Log($i, "Нашло, файлов");
  81. }
  82.  
  83. //unlink('test.html');
  84.  
  85. //echo "<pre>";
  86. //print_r($netu_failov);
  87. //echo "</pre>";
  88. //echo count($netu_failov)." Не найденные файлы ";
  89.  
  90. //echo "<pre>";
  91. //print_r($est_faili);
  92. //echo "</pre>";
  93. //echo count($est_faili)." Найденные файлы";
  94.  
  95. //AddMessage2Log($netu_failov, "Не найденные файлы, имена");
  96.  
  97. //echo "Есть в базе";
  98. //echo "<pre>";
  99. //print_r($est_v_baze);
  100. //echo "</pre>";
  101. //
  102. //echo "Нету в базе";
  103. //echo "<pre>";
  104. //print_r($nety_v_baze);
  105. //echo "</pre>";
  106.  
  107. $status = count($netu_failov)." Не найденные файлы ".count($est_faili)." Найденные файлы, Не найденные в инфоблоке файлы ".$nety_v_baze." Найденные в инфоблоке файлы ".$est_v_baze."";
  108. $fp = fopen($_SERVER["DOCUMENT_ROOT"].'/application/cron/status/recurs_upload.txt', 'w+');
  109. fwrite($fp, $status);
  110. fclose($fp);
  111.  
  112.  
  113. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement