Решение "проблемы" ненужных картинок или "пылесос" для LiveStreet
Вот тут была поднята тема о неиспользуемых картинках:
Эта «проблема» легко решаема. Всё просто:
Берём этот скриптик, сохраняем в файлик с именем допустим cleaner.php и кладём этот файлик в корневую директорию сайта.
Архив со скриптом:
Для того что бы никто кроме вашего демона крон не мог запустить этот достаточно ресурсоёмкий скрипт на исполнение, в .htaccess добавляем следующие строчки:
<Files "cleaner.php">
Order Deny,Allow
Deny from all
Allow from *IP на котором находится Ваш cron*
</Files>
P.S. Я не несу ответственности за возможные негативные последствия использования этого скрипта. Если вдруг этот скрип доставил Вам проблем, я Вас очень прошу не смотрите сериал «ALF» — он Вас будет бесить, поверьте.
P.P.S. Забыл добавить, что этот скрипт работает только для LiveStreet 0.2
33 комментария
Тут возможны два варианта — один простой, второй тоже не сложный.
1. Простой:
Отучаем саму LiveStreet «мусорить» — убираем в самой системы раскладывание по кучам папок (там насколько я помню просто рандомная функция натыкана), и делаем имена сохраняемых файлов подлиннее (навряд ли пользователь зальёт столько изображений, что имена файлов будут временами совпадать). В этом случае система просто будет складировать файлы в одну директорию закреплённую за пользователем. Так же необходимо ещё добавить в этот скрипт проверку поля фотографий пользователей в таблице с пользователями.
(Этот вариант подойдёт для тех, кто ставит систему с нуля)
2. Посложнее, так как в этом случае нужно «чесать репу», а это всегда «лениво».
Добавить в этот скрипт ещё парочку циклов, и тем самым научить его ковыряться в подпапках. Соответственно так же нужно добавить проверку фотографий.
(Этот вариант подойдёт для тех, у кого сайт уже с контентом)
***
В случае с VDS и полноценным дедиком проблемы с файловым мусором не стоит — там места водоём, а вот для небольших сообществ у которых система крутится на обычном виртуальном хосте эта проблема теоретически может возникнуть.
В версии 0.2 да, там всё именно так как Вы описали, а вот в 0.3 такая ситуация:
livestreet.ru/uploads/images/2/2/8/3/1306/f21ab38509.jpg
В ранних ревизиях 0.3 фотки пользователей разбрасывались произвольно по директории images в рандомных подпапках, а как в свежих ревизиях обстоит дело с этим я затруднюсь ответить.
На счет второго момента(внутри пользовательской директории) — а где хранить эти пользовательские каталоги? в одном общем каталоге?
тут возможен вариант с «запоминанием» для каждого юзера своего случайного каталога, но я сделал без этого
Дополнительным аргументом в пользу такого варианта служит тот факт, что при использовании лишь одной файловой системы можно получать информацию о картинках конкретного пользователя. Например, у меня была идея выбирать случайную картинку пользователя из его каталога либо даже сделать подобие галереи вроде той, что на сайте русской службы би-би-си показывает «лицо дня» или что-вроде этого.
такой вариант разве не пройдёт?
например, для пользователя #2379
site.ru/uploads/images/0/0/2/3/7/9/%random%/%random%/
для пользователя #14
site.ru/uploads/images/0/0/0/0/1/4/%random%/%random%/
как я понял, такой сложный формат /uploads/images/5/b/1/2/1/8c60e25c50.jpg имеет смысл только как защита от автоматического скачивания изображений 01.jpg — 99.jpg. что только мешает людям.
во всех прочих смыслах это крайне неудобная логика именования файлов
не найдя, как ее отключить — зашел сюда и, как понял, это лишь способ раскидать картинки по разным директориям, чтобы в каждой было не больше 40-100. я верно понял?
если да — предлагаю простой и удобный способ сделать это, который позволит в любой момент найти любые изображения:
пользователь/дата/01-99.jpg
/uploads/images/gamberro/2010-01-11/01.jpg…
после этого чистить картинки станет возможно руками
В ЛС 0.4 пути такие: /images/00/00/01/2010/01/11/asdad.gif, где 000001 — id пользователя
/uploads/images/ga/gamberro/2010-01-11/01.jpg
/uploads/images/ga/gatherer/2010-01-11/01.jpg
/uploads/images/gu/gunny/2010-01-11/01.jpg
можно еще точнее — присваивать каждому посту уникальный id и
/uploads/images/gu/gunny-00023825/01.jpg
задачи:
1. максимально сократить вложенность директорий,
2. класть файл в понятный человеку урл: директорию пользователя/блога/топика
3. оставлять прежнее имя файла для удобства отслеживания, какие файлы были залиты в сообщение, а какие еще нет
было
/uploads/images/5/b/1/2/1/8c60e25c50.jpg
должно стать
/up-img/ga/gamberro/%название_блога%/%номер_топика%/01.jpg
нужна ваша помощь в нахождении нужных переменных движка
как узнать не номер пользователя, а его имя?
как узнать название блога?
как узнать номер топика?
как в 38 строке v0.3 > /include/ajax/uploadImg.php заменить func_generator(), выдающий 8c60e25c50 на оригинальное имя файла типа 06.jpg?
(только умоляю — поосторожнее с ней)
Заранее извиняюсь за «портянку».
Пароль на цифру, выкидывает ошибку, но регестрирует
Не режет длинные слова, проверю здесь
ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп