Очистка upload по cron

скрипт удаляющий ненужные файлы и пустые папки

#31 21 сентября 2019 в 16:36


Изменил в unfinder папку сканирования файлов и нашлось 15000 лишних.

Ris
т.е. вы хотите сказать что мой скрипт не нашел 15к файлов? или я чего то не понял? :)
#32 21 сентября 2019 в 16:44

т.е. вы хотите сказать что мой скрипт не нашел 15к файлов? или я чего то не понял? :)

@fazer
Он не нашел их по одной простой причине — они лежат не в /upload/000. Зато в папке 000 он нашел 600 с лишним, которые не нашел анфайндер.
По поводу вашего скрипта могу сказать, что вещь хорошая и работает хорошо. Но требует настроек на сервере, что на шаред хостинге невозможно.
Кстати, по хрону так и не заработало, хотя никаких ошибок больше не выдает. Стартовал из консоли.
#33 21 сентября 2019 в 17:25


Он не нашел их по одной простой причине — они лежат не в /upload/000

Ris
А можете привести пример какой-либо записи из не стандартной папки
1.запись в базе
2.расположение файла
?
думаю можно доработать,


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

Ris
На стандартных хостингах все модули для перла обычно уже стоят, многие ещё пишут сайты, сервисы на перле
Что касаемо хрона, надеюсь найдется добрый человек, который сможет мой скрипт прикрутить к стандартному крону icms2
#34 21 сентября 2019 в 18:26

А можете привести пример какой-либо записи из не стандартной папки
думаю можно доработать,

@fazer
Не думаю, что есть смысл в этом. На новых версиях все файлы складываются в 000, у других пользователей нет того разнообразия, как у меня.
А я как-нибудь переживу.

Что касаемо хрона, надеюсь найдется добрый человек, который сможет мой скрипт прикрутить к стандартному крону icms2

@fazer
Можно попробовать сделать стандартное задание, которое будет стартовать хук cron_somehook, который будет стартовать ваш скрипт, а уж там надо будет придумать, как запустить скрипт perl от имени рута.
#35 21 сентября 2019 в 19:19

как запустить скрипт perl от имени рута.

Ris
ему не нужно от рута, он работает в тех же правовых рамках что и папка аплоад,
от рута крон потому что в системном кроне проблема с переменными среды, он сам изолирован по умолчанию

ps
и всё же, покажите плз записи в мускуле от тех картинок, что не в 000,
я уже сделал опрос по разным папкам мне нужно знать как индетифицируются картинки в базе
#36 21 сентября 2019 в 19:59

и всё же, покажите плз записи в мускуле от тех картинок, что не в 000,

@fazer
Пример: ссылка на картинку в поле content_html таблицы cms_comments
<img src="/upload/019/u1933/e/c/bez-nazvanija.jpg"/>
Соответственно user_id автора комментария 1933.
Папки с номерами выше 000 возникают, когда пользователей больше ста:
  1. function files_get_upload_dir($user_id = 0) {
  2.  
  3. $dir_num_user = sprintf('%03d', intval($user_id/100));
  4.  
  5. $file_name = md5(microtime(true));
  6. $first_dir = substr($file_name, 0, 1);
  7. $second_dir = substr($file_name, 1, 1);
  8. $upload_path = cmsConfig::get('upload_path');
  9.  
  10. $dest_dir = $upload_path."{$dir_num_user}/u{$user_id}/{$first_dir}/{$second_dir}/";
  11.  
  12. if(!is_dir($dest_dir)){
  13. @mkdir($dest_dir, 0777, true);
  14. @chmod($dest_dir, 0777);
  15. @chmod(pathinfo($dest_dir, PATHINFO_DIRNAME), 0777);
  16. @chmod($upload_path . "{$dir_num_user}/u{$user_id}", 0777);
  17. @chmod($upload_path . "{$dir_num_user}", 0777);
  18. }
  19.  
  20. return $dest_dir;
  21.  
  22. }
-----------------------------------------------------------------------------------------------
Есть мысль, что можно проверять имя папку перед сканированием is_numeric($folder_name)
Папки с цифровыми именами сканируем, остальные мимо.
#37 21 сентября 2019 в 22:43

Есть мысль, что можно проверять имя папку перед сканированием is_numeric($folder_name)
Папки с цифровыми именами сканируем, остальные мимо.

Ris
А почему именно numeric?, есть мысль сканировать все кроме deleted )
(в оригинальном icms2 с "демо" есть папка upload/u1 — тоже можно просканить)
#38 22 сентября 2019 в 10:55
Ris,
Не могли бы вы ещё разок тестануть обновленный скрипт cron_cleaner-v7.59.zip
желательно с реальным удалением
#39 22 сентября 2019 в 11:16
@fazer,
18523 files for delete
62 dirs for delete
cron_cleaner ok
С реальной очисткой попробую позже.
-------------------------------------------------
Добавил в список полей content_html
3006 files for delete
62 dirs for delete
cron_cleaner ok

Вот это больше похоже на правду.
#40 22 сентября 2019 в 11:29


Вот это больше похоже на правду.

Ris
ok, спасибо

ps
нашел тут ещё одну беду (почему-то ни кто про неё не упоминал)
ФАЙЛЫ, они же тоже в upload, только находятся в полях мускула files и адресация другая
#41 22 сентября 2019 в 11:34

ФАЙЛЫ, они же тоже в upload, только находятся в полях мускула files и адресация другая

@fazer
Так просто проверять расширение файла. И удалять только jpeg, jpg, gif, png и bmp.
#42 22 сентября 2019 в 11:52


Так просто проверять расширение файла. И удалять только jpeg, jpg, gif, png и bmp.

Ris
не гламурно, файлов тоже полно кривых, даже тут на форуме файлы копятся, и не заменяются при вставке с одинаковыми названиями
#43 22 сентября 2019 в 12:30

не гламурно, файлов тоже полно кривых, даже тут на форуме файлы копятся, и не заменяются при вставке с одинаковыми названиями

@fazer
В том числе файлы xml для турбостраниц тоже удалены вместе с папкой. smile
На мой взгляд, искать только в папках с цифровыми именами и только картинки.
Не стоит пытаться объять необъятное. Мало ли у кого что лежит в upload…
#44 22 сентября 2019 в 13:22
Приделал настройку сканируемых расширений, по умолчанию
'jpeg', 'jpg', 'gif', 'png', 'bmp'
Дальше думаю не стоит совершенствовать, если кто заинтересован качаем cron_cleaner-v7.59.zip
настраиваем, запускаем… описание в первом посте

ps
если будут ошибки пишите,
если кто захочет приделать к штатному cron ICMS2 — welcame
(приделать к скрипту возможность получать аргументы не проблема)
#45 22 сентября 2019 в 13:51

В том числе файлы xml для турбостраниц тоже удалены вместе с папкой. smile

Ris
последняя версия не может тронуть xml, если вы не указали это как "допустимое" расширение для файла,
а вот если указали то и соответствующую базу надо подключать, к сожалению я не в курсе где оно живет
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.