XF 2.2 Поиск лишних аттачментов

Версия XenForo
2.2.13

Dkf

Проверенные
Сообщения
504
Решения
4
Реакции
63
Баллы
90
После очень долгих и сложных ручных работ с вложениями есть подозрение на большое кол-во лишних файлов в папке attacments
Есть ли плагин который удалить файлы которые не нужны, т.е. о которых нет записи в базе
 
После очень долгих и сложных ручных работ с вложениями есть подозрение на большое кол-во лишних файлов в папке attacments
Есть ли плагин который удалить файлы которые не нужны, т.е. о которых нет записи в базе
Ксен сам удаляет такие файлы по кронджобу
 
Ксен сам удаляет такие файлы по кронджобу

Значит он работает или раз в месяц и мне повезло что он ещё не запускался... т.к. иначе он удалил бы очень много нужного до того как я пофиксил.
Или скорей всего он работает "тупо", без глубокой проверки вложений, удаляет просто мусор из папок.
Под мусором я имею в виду тот факт, что в папке attachments/602/ должны быть файлы которые начинаются на 602000 и заканчиваются 602999 и т.д.
Если нет - он их удаляет.

Но у меня проблема глубже. В папке 602 теперь у меня может быть 602001-xxxxxxxxxxxx и 602001-yyyyyyyyyyyy
Я восстанавливал сайт после сбоя и потери аттачментов за нескольких месяцев .
И после восстановления данные в базе и в файловой системе отличались. Долго объяснять, короче сдвинулась data_id
Мне пришлось руками написать код по переименованию файлов.

1695905686057.png

Я не удалял за собой после переименования т.к. это вызывало проблемы небольшие. А вот сейчас хочу удалиьт...
 
Последнее редактирование:
Движок не удаляет мусор. И плагинов таких я не припомню. Он удаляет вложения, которые есть в БД и которые стали бесхозными (удалили пост/тему/ресурс), но не более
 
Мне пришлось руками написать код по переименованию файлов.
По идее делать только это не совсем корректно.
Нужно ещё в базе править file_size

В базе, в какой-то таблице, есть поле file_size, где стоит значение размера этого файла - xxx.
Это значение движок выдаёт в http-заголовке "content-length: xxx"
И вот самое интересное должно быть в некоторых браузерах, которые ориентируются на этот заголовок.
То есть, в теории ,некоторые браузеры могут недогружать картинки, которые например реальным размером 1111 байт, а в базе значение 1000, так как они получат http-заголовок "content-length: 1000"

Если размер такой-же то должно прокатить.
 
Последнее редактирование:
По идее делать только это не совсем корректно.
Нужно ещё в базе править file_size

В базе, в какой-то таблице, есть поле file_size, где стоит значение размера этого файла - xxx.
Это значение движок выдаёт в http-заголовке "content-length: xxx"
И вот самое интересное должно быть в некоторых браузерах, которые ориентируются на этот заголовок.
То есть, в теории ,некоторые браузеры могут недогружать картинки, которые например реальным размером 1111 байт, а в базе значение 1000, так как они получат http-заголовок "content-length: 1000"

Если размер такой-же то должно прокатить.

Спасибо за информацию... Буду знать.
Если хеш совпадает то и размер в этом поле тоже совпадает? :)
Я же не другой файл подсовываю, а тот-же самый. Просто он у меня имеет другое имя.

Базу данных я никак не трогаю пока. Но в будущем буду. Т.к. я точно знаю что вернуть аттачменты за несколько месяцев точно не смогу.
И тут возникает вопрос - как правильно удалить данные об аттачменте которого нет и никогда не будет?
Больше всего меня смущает тот факт что сущестуют сообщения без контента (может я ошибаюсь?)
Когда человек добавил аттачмент в сообщение и ничего не написал вообще. Если я удалю все данные о аттачменте из базы то что тогда будет с сообщением?
 
Последнее редактирование:
Когда человек добавил аттачмент в сообщение и ничего не написал вообще.
Такие вложения, не привязанные к контенту, удаляются сами
Движок не трогает то, о чем не знает. Если вложение есть в базе - он о нем знает
 
Такие вложения, не привязанные к контенту, удаляются сами
Движок не трогает то, о чем не знает. Если вложение есть в базе - он о нем знает
А я понял..
Посмотрел в базу. Если в сообщение человек добавил аттачмент не написал никакого контента больше то оно выглядит примерно так
Код:
[ATTACH=full]12345[/ATTACH]
 
А я понял..
Посмотрел в базу. Если в сообщение человек добавил аттачмент не написал никакого контента больше то оно выглядит примерно так
Код:
[ATTACH=full]12345[/ATTACH]
Это в сообщении )
А в http-заголовках будет content-length, по идее он может браться из базы
Я не вникал, но в движке есть несколько таких участков кода
Код:
 $modify['set_headers']['Content-Length'] = $size;
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу