loading...

Авторизация ...

Имя пользователя :
Пароль :
я всё забыл!

МодулиОчистка неиспользуемых картинок

Написал walkman7, 20 декабря 2010 | 28 комментариев | рейтинг новости не нравится   +4   нравится Версия для печати
Очистка неиспользуемых картинок


Модуль проводит очистку картинок которые не используются на сайте.

Алгоритм модуля простой, берем полный список файлов в папке uploads/posts/* заполняем таблицу PREFIX_clean, а потом проверяем на наличия изображений в таблице PREFIX_images, если нету то удаляем.

Настройки модуля в главном файле engine/inc/cleandisk.php они довольно понятно прокоментированы.

Установка:
1. Распаковать архив в корень
2. Запустить install.php

Функции модуля:
Сканировать - сканирует папку uploads/posts/* и в пакетном режиме записывает в БД пути и имена картинок
Очистить - фильтрует картинки и удаляет не нужные (в автоматическом режиме)

Сайт с количеством новостей 75К+ (ранее наполняемый граббером) нашлось примерно 200 Мбайт ненужных картинок.

Скачать: Вы не можете скачивать файлы с нашего сервера

От Администрации: Очистка диска от картинок - операция трудоемкая и не приносящая столь явного положительного эффекта. Чем больше картинок будет удалено, тем больше будет деградация качества работы дисковой подсистемы сервера.


Комментарии пользователей

  Экспорт комментариев в RSS
 Сортировать по рейтингу, по дате

Написал qiriq, 20 декабря 2010 в 09:33 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 2, Пользователи
Карма:
DLE 9.0

MySQL Error!
------------------------

The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Error Number:
1064

INSERT INTO dle_clean (name, path) VALUES


MySQL Version: 5.0.90

Написал elias0021, 20 декабря 2010 в 11:26 плохой комментарий   +1   хороший комментарий
Новостей: 0, комментариев: 3, Пользователи
Карма:
У дле вроде же есть сборщик мусора, странно, что у вас нашлось так много неиспользованных картинок. Может грабер левый?

Delete unusing images from site

Правильней будет "Delete unused images".

Написал kilya, 20 декабря 2010 в 11:29 плохой комментарий   0   хороший комментарий
Новостей: 8, комментариев: 36, Пользователи
Карма:
Кто опробовал - отпишитесь!

Написал Брупт, 20 декабря 2010 в 11:48 плохой комментарий   0   хороший комментарий
Новостей: 4, комментариев: 84, Пользователи
Карма:
Зачем создавать лишнюю таблицу в базе? А если картинок 50000 и более?

Тут можно сделать рекурсивную функцию, которая постепенно со sleep'ом выполняет чтение директории и поиск изображений в базе и если изображения в базе нету, то удаляет его :-)

P.S. Иногда, наоборот бывает, в базе изображение есть, а с сервера удалено )

Написал ximdom, 20 декабря 2010 в 11:48 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 1, Пользователи
Карма:
ДЛЕ 9, не пашет.
При установке
Warning: unlink(install.php): Permission denied in /home/ukweb/public_html/install.php on line 68

Сканирование:
MySQL Error!
------------------------

The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Error Number:
1064

Написал MSK, 20 декабря 2010 в 12:58 плохой комментарий   +2   хороший комментарий
Новостей: 2, комментариев: 113, Пользователи
Карма:
Для чистки мусора нужен комплексный подход.
Картинка может быть и на сервере и в таблице, но НЕ используется в новости (когда льют несколько картинок для новости, используют одну, а остальные НЕ удаляют).

Написал Gauss, 20 декабря 2010 в 14:39 плохой комментарий   0   хороший комментарий
Новостей: 3, комментариев: 9, Пользователи
Карма:
Модуль имеет смысл, м.б. стоит задуматься над реализацией, но идея хороша.

Написал Bomberman, 20 декабря 2010 в 15:25 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 154, Пользователи
Карма:
1) Нужно проверять наличие ссылки прямо в новости, а не в (dle_images)
2) Нужно проверять абсолютно по всем полям таблицы новостей (dle_post)
3) Поскольоку таблица (dle_post) у всех имеет разное кол-во столбцов - запрос нужен универсальный, через *
4) Нужно проверять уменьшенные копии
5) Нужно удалять сразу и обычные и уменьшенные
6) Нужно чистить таблицу с записями о картинках (dle_images)
7) Нужно делать обратную проверку - есть ли картинка на сайте, которая записана в (dle_images)
8) Обязательно нужно логировать что удалено.

вот если все пукнты будут соблюдены - будет хороший модуль, который заслуживает войти в стандартные модули "очистки сайта" DLE

И вообще не понятно зачем отдельная таблица, если всё можно вогнать в массив?

Написал orenlab, 20 декабря 2010 в 17:56 плохой комментарий   +2   хороший комментарий
Новостей: 20, комментариев: 201, Администраторы
Карма: 17±
Сайт с количеством новостей 75К+ (ранее наполняемый граббером) нашлось примерно 200 Мбайт ненужных картинок.


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

Самое явное последствие от удаления файлов на 200Mb - это фрагментация, а теперь подумайте хорошо, вас на сервере много, и кто то что то удаляет постоянно... а дефрагментацию не возможно выполнить под запущенной осью... и это только первый и явный недостаток... Про то, чем это грозит на высоконагруженных проектах я вообще молчу...

Написал walkman7, 20 декабря 2010 в 18:12 плохой комментарий   +1   хороший комментарий
Новостей: 2, комментариев: 87, Пользователи
Карма: -3±
Да знаю, модуль не ахти, но чисто для себя слил дамп сайта с серва и заюзал мод. В production сувать его не рекомендуется. Почему? Уже сказал orenlab,
хранить картинки дешевле по ресурсам, чем их удалять


При создании новости модуль перебрал 50% изображений, конечный результат 400+ МБ за 3 года.

Если можно то добавьте замечание в новость bo

Написал Bomberman, 20 декабря 2010 в 18:36 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 154, Пользователи
Карма:
Для небольших сайтов очень полезный модуль. Тем более с картинками у дле не всё гладко. В осбенности при заливке множества больших картинок.

Написал Sander1, 20 декабря 2010 в 19:57 плохой комментарий   0   хороший комментарий
Новостей: 21, комментариев: 171, Пользователи
Карма: 15±
Bomberman,
1) Полностью согласен, таблица dle_images и так чистится, если картинка не прикреплена к новости.

2) Не забыть проверить в полях счетчика просмотров и комментариев lol

3) Правильно, пусть mysql тоже по офигевает.

4,5,6) Полностью согласен.

7) Ну хм.. наверно тоже нужно... Я просто процесс чистки по своему представляю, где этот пункт не обязательно выделать.

8) Скажем не логировать, а выводить отчет об удаленных картинках. Хотя ИМХО подробный отччет не нужен, просто количество картинок, откуда удалены и т.п.

orenlab, С одной стороны согласен, с другой стороны:
1. 4dle хранит картинки на своем сервере.
2. Если уже есть некая "засранность" на сервере, в любом случае полезно ее почистить, чем хранить мертвым грузом 200-400 мб неужных картинок.

Или лучше смирится с потерянным дисковым пространством?

Написал orenlab, 20 декабря 2010 в 22:53 плохой комментарий   +1   хороший комментарий
Новостей: 20, комментариев: 201, Администраторы
Карма: 17±
orenlab, С одной стороны согласен, с другой стороны:
1. 4dle хранит картинки на своем сервере.
2. Если уже есть некая "засранность" на сервере, в любом случае полезно ее почистить, чем хранить мертвым грузом 200-400 мб неужных картинок.

Или лучше смирится с потерянным дисковым пространством?


4dle.ru уже давно не считает место на жестком диске, тем более под картинки. Все картинки и все файлы модулей хранятся на винтах, и не помню что бы мне или Никону пришло в голову почистить место :). К тому же 4dle.ru это немного другой случай, тут можно преспокойно организовать "технические работы" на ночь, почистить всё, прогнать дефрагментацию и запустится - никто не заметит этого кроме рекламодателей... так что мой совет вам, не затевайте подобные чистки, дисковое пространство сейчас стоит копейки.

Написал dark666, 20 декабря 2010 в 20:44 плохой комментарий   0   хороший комментарий
Новостей: 2, комментариев: 94, Пользователи
Карма:
ОФФТОП: По поводу хранения картинок. В корне не соглашусь хранить их на сторонних ресурсах, так как:
1. Рекламы как г*вна там.
2. Сразу пропадает стандартная реализация thumb (непоюзаешь).
3. То что лежит у тебя под боком, и контролируется только тобой, всегда лучше чем, сегодня хостинг работает, завтра работает, послезавтра работает....не работает....а когда он не работает firefox вместо фавиконки выводит нам.. =)


А по поводу модуля, ну что, допилить его нужно как следует и думаю что дле это сам реализует (допиливанием своей чистки).

Написал MSK, 20 декабря 2010 в 22:42 плохой комментарий   0   хороший комментарий
Новостей: 2, комментариев: 113, Пользователи
Карма:
Цитата: dark666
думаю что дле это сам реализует

Я поднимал подобную тему - ответ был отрицательный.

Написал walkman7, 20 декабря 2010 в 23:54 плохой комментарий   +1   хороший комментарий
Новостей: 2, комментариев: 87, Пользователи
Карма: -3±
Брупт,
Зачем создавать лишнюю таблицу в базе? А если картинок 50000 и более?

хех, у меня картинок ед так 150К+. И ето на лоkальном сервере с Атом 1.6 и RАМ 1 ГБ :)

Написал aL13n, 21 декабря 2010 в 03:28 плохой комментарий   0   хороший комментарий
Новостей: 3, комментариев: 125, Пользователи
Карма: 10±
orenlab,
ну ты отчасти и загнул. Не те масштабы, совсем не те. Это не VK или FB где операция удаления проигрывает по всем параметрам.
400МБ удаленных изображений (4к файликов, например)? Да ради бога, никто и не заметит этого. На "высоконагруженном" сайте пользователи аватары меняют как носки.
Операция абсолютно бессмысленная, спору нет, но не при таких масштабах. Подавляющее большинство вебмастеров, юзающих дле, довольствуется своими 1000МБ.

Написал Bomberman, вчера, 00:00 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 154, Пользователи
Карма:
2) Не забыть проверить в полях счетчика просмотров и комментариев

и их тоже. Многие дле переписывают, ставят модули. Некоторые столбцы в базу добавляются, у некоторых меняется назначение. Поскольку вот такая вот чистка происхроодит редко - нужно делать тщательно.

И ещё стоит добавть что картинки наверно лучше не удалять, а помещать в отдельную папку (архив), с сохранением каталогов. Поскай эти 200 метров поваляются ещё годик, вдруг админ заметит что удалилась нужная картинка, которую он залил, но по какой-то причине использовал не в новости, а в другом месте... ну и разные вещи случаются, удалять вот так прямо скриптом не стоит. Меня самого это пугает...
А дальше если админу не нужны эти картинки и он полностью уверен что и не понадобятся - то он сам уже может двумя кликами удалить этот архив.
В таком случае модуль будет полностью безопасен и универсален.

P.S. а ведь первый нормальный модуль в этом году...

Написал li4nost, вчера, 00:28 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 7, Пользователи
Карма:
скажите, а те настройки, которые есть в админке (удалять неиспользуемые картинки через... )
как он работает? и работает ли вообще?

Написал walkman7, вчера, 13:14 плохой комментарий   +2   хороший комментарий
Новостей: 2, комментариев: 87, Пользователи
Карма: -3±
Да, работает, но если картинка есть в БД dle_images и прикреплена к новости. Но не удаляется если картинка не используется в новости, но прикреплена к ней.

Написал Sander1, вчера, 13:34 плохой комментарий   +1   хороший комментарий
Новостей: 21, комментариев: 171, Пользователи
Карма: 15±
Объясняю на пальцах.
Ситуация 1:
Создаешь новую новость, загрузил 10 картинок, потом передумал создавать новость, но картинки вручную не удалил. Вот в таком случае эти картнки будут удалены через указанный интервал времени.

Ситуация 2:
Если же новость была добавлена, но из 10 загруженныз картинок была использован только одна, то все картинки будут прикреплены к новости и не будут удалены, хоть и не используются.

Ситуация 3:
Редактируешь новость, картинки загрузил. Теперь независимо - сохранил новость или нет, картики уже прикреплены к новости. И автоматически удалены не будут.

Написал Bomberman, вчера, 22:29 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 154, Пользователи
Карма:
Плучается сайт могут использовать как хостинг картинок если при модерации новости не проверять.
Также сюда входит ситуация когда картинка залилась, но скрипт этого не зафиксировал. Данную багу я встречал на всех сайтах с дле, над которыми работал. Это иногда происходит когда заливаешь огромную картинку (5 мегапикселей и выше) или когда заливаешь через первую форму (та, что не на флеше) сразу много небольших картинок. В этом случае часто выходит так что большая часть картинок загрузилась, но скрипт фиксирует только часть из залитых.

Попробуйте здесь на 4дле создать новость и залить большую картинку (разрешение 5000 на 5000 к примеру) При заливке форма зависнет и выведет пустоту) Если так пытаться залить раз 20 подряд и если эта бага у них не профиксена - один раз картинка точно зальётся, но не зарегистрируется как залитая и будет лежать у них до конца существования сайта))
Пока не знаю почему это происходит...

Написал Sander1, вчера, 23:11 плохой комментарий   0   хороший комментарий
Новостей: 21, комментариев: 171, Пользователи
Карма: 15±
1. Время обработки php скрипта ограничено и обычно равно 30 сек, после чего идет прекрашение обрабоки кода (на случай если произошло зависание/зацикливание кода).
2. Скорость загрузки файла ограничена вашим провайдером и хостером (ну и все попутные маршрутизаторы/серверы).
3. В итоге картинка просто не успевает за 30 секунд загрузится на сервер.

Иногда она может успеть залиться на сервер (перепады скорости передачи), но не успевает добавиться в БД.
То же самое касается множества маленьких картинок.

Написал aL13n, вчера, 23:21 плохой комментарий   0   хороший комментарий
Новостей: 3, комментариев: 125, Пользователи
Карма: 10±
Забыл упомянуть еще об ограничении POST загрузок. Это не относится к проблеме выше, если загружается "когда-нибудь", но на всякий случай стоит упомянуть :)

Кстати, возьмите в пример torrentpier (рутрекер.орг, например): так там все гораздо сложнее, т.к. по крону ежедневно происходит удаление каких либо файлов.

PS. Это сообщение "От администрации" нужно удалить. Я считаю, что оно тут не к месту. Отдельным постом в качестве рекомендации - да, стоит написать, но не пугать.

Написал Bomberman, сегодня, 00:29 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 154, Пользователи
Карма:
Sander1, я сам на php пишу и уже довно продумал такие банальные варианты. Глубже разбираться не охото, просто говорю что замечал косяк ниодин раз.
Попробуйте прямо здесь, на этот сайт через форму добавления новости залить большую картинку, к примеру вот эту: _http://www.josefrichter.com/blog/wp-content/uploads/gtd_wallpaper.png
Никаких 30 секунд ждать не придётся - ошибка произойдет почти мгновенно.
Потом попробуй набрать много средних по разрешению картинок мегабайт на 20 и загрузить их все разом. Только не через флешь загрузчик, а через форму где поля плюсиком добавляешь. Будет тоже самое.
Забыл упомянуть еще об ограничении POST загрузок.
какое ограничение? через POST, насколько я знаю, можно лить неограниченный объём. По крайней мере на депозит заливается 4 гб без проблем. На радикал думаю тоже.

Как минимум дле должен выводить сообщение об ошибке. А то, что картинка загружается но не регистрируется как залитая - это вообще большой косяк. Хрен знает сколько таких картинок копится на сайтах с большой посещаемостью...

Написал Sander1, сегодня, 01:24 плохой комментарий   0   хороший комментарий
Новостей: 21, комментариев: 171, Пользователи
Карма: 15±
Bomberman, залил без проблем. thumb не создалась, из-за чего подвисла страница.
Нужно увеличивать параметр memory_limit.
Изображения в truecolor требуют три байта на каждую точку

Имеем: 8000*5000*3 = 120000000 байта памяти (114 Мб).
Так же возможно стоят другие ограничения.

Вот у себя залил, запись в бд:
6 2010-12/1293056181_gtd_wallpaper.png 0 Sander 1293056123


через POST, насколько я знаю, можно лить неограниченный объём

post_max_size = 20M
Это по дефолту.

Написал aL13n, сегодня, 02:27 плохой комментарий   0   хороший комментарий
Новостей: 3, комментариев: 125, Пользователи
Карма: 10±
Цитата: Bomberman
через POST, насколько я знаю, можно лить неограниченный объём

Если бы так было, то ддос не стоил бы стольких усилий и денег ;)
Кстати, депозит !== радикал. Или депозит стал имедж хостингом? :)

Написал li4nost, сегодня, 11:07 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 7, Пользователи
Карма:
скажите, а если допустим залита картинка.
создан тумб.
но используется оригинал. этот скрипт удаляет тумбы?

Информация



Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Анализ Тиц и PR сайта

[removed][removed] [removed] (adsbygoogle = window.adsbygoogle || []).push({}); [removed]