Что нового

Вопрос по чистке не используемых attachment в dle

vitalii.nsk

Посетитель
Регистрация
18 Мар 2025
Сообщения
2
Реакции
0
Здравствуйте, подскажите пожалуйста такой момент. В dle возможно отследить и очистить загруженные (в новости или статистические страницы) но не добавленных в опубликованную новость или статистическую страницу attachment ?

P.S пытался найти информацию через поиск но не нашёл ответа на вопрос.
 
Последнее редактирование:
Здравствуйте, подскажите пожалуйста такой момент. В dle возможно отследить и очистить загруженные (в новости или статистические страницы) но не добавленных в опубликованную новость или статистическую страницу attachment ?

P.S пытался найти информацию через поиск но не нашёл ответа на вопрос.
Всего скорее можно, вроде в новых версиях DLE, если ты загрузил и не вставил файл в редактор и сохранил, то файл не попадает в таблицу префикс_file. Могу ошибаться. Соответсвенно нужно писать плагин, который будет сверять, что есть в таблице префикс_file и соответствует ли, что находиться в папке uploads/files/ и после этого удалять файл из папки. Всё завсить от версии DLE, в старых версиях возможно подругому.

Примерно по такой логике работает стандартная настройка DLE с картинками:

Screenshot_1.png
 
Здравствуйте, подскажите пожалуйста такой момент. В dle возможно отследить и очистить загруженные (в новости или статистические страницы) но не добавленных в опубликованную новость или статистическую страницу attachment ?

P.S пытался найти информацию через поиск но не нашёл ответа на вопрос.
Если я правильно вас понял то:

  1. Проверка в базе данных:
    В DLE информация о загруженных файлах хранится в таблице dle_images или dle_files (в зависимости от версии). Можно выполнить SQL-запрос, который покажет файлы, не привязанные к опубликованным записям.

    SELECT * FROM dle_images WHERE news_id = 0;

    Если в таблице dle_files у файлов нет привязки к news_id, значит они не используются ни в одной новости.

  2. Автоматическая очистка через CRON
    Можно создать скрипт на PHP, который периодически удаляет такие файлы. Что то такое:
    <?php
    require_once 'engine/init.php';
    $db->query("DELETE FROM dle_images WHERE news_id = 0");
    ?>

    Этот код можно запускать по CRON и он будет очищать неиспользуемые картинки
 
Если я правильно вас понял то:

  1. Проверка в базе данных:
    В DLE информация о загруженных файлах хранится в таблице dle_images или dle_files (в зависимости от версии). Можно выполнить SQL-запрос, который покажет файлы, не привязанные к опубликованным записям.

    SELECT * FROM dle_images WHERE news_id = 0;

    Если в таблице dle_files у файлов нет привязки к news_id, значит они не используются ни в одной новости.

  2. Автоматическая очистка через CRON
    Можно создать скрипт на PHP, который периодически удаляет такие файлы. Что то такое:
    <?php
    require_once 'engine/init.php';
    $db->query("DELETE FROM dle_images WHERE news_id = 0");
    ?>

    Этот код можно запускать по CRON и он будет очищать неиспользуемые картинки
Здравствуйте, не правильно поняли ) news_id = 0 только у загруженных файлов в неопубликованных новостях. Если же файл загружается в опубликованную новость то он сразу же получает news_id новости. У меня проблема в том что в опубликованных новостях обновляются файлы attachment допустим есть файл v1 загружается обновленный файл v2 публикуется в полной новости вместе файла v1 но сам файл v1 с новости удален не был и так и лежит в загруженных. Вот эти файлы и требуется почистить
 
Ага, теперь понятнее стало.
Думаю вам может помочь вот такой запрос к БД:


Этот запрос проверяет сколько файлов attachment загружено для публикации и если у публикации больше 1, то он выведит все остальные (все кроме самой последний - по дате выборка).
Но этот вариант подойдет вам, только если у вас в публикации всегда нужен только один файл (самый новый).

Уже на базе этого запроса к БД, можно создать скрипт который будет удалять найденные файлы с сервера и с БД.
 
Верх