Будут ли удалены управляемые файлы, если в file_usage нет соответствующей записи?

9

Я использую сервисный модуль для реализации REST API. Один ресурс позволяет POST с загруженными файлами. Во время предварительной обработки сервисов я сохраняю файл во временный каталог. Во время функции пост-обработки сервисов я перемещаю файл в личный каталог, вызываю file_usage_add и сохраняю сущность хоста. Когда возникает ошибка проверки между сохранением временного файла и перемещением временного файла в постоянное местоположение, я не удаляю явным образом временный файл. Я думал, что drupal cron позаботится об этом за меня, поскольку в file_usage нет записи для этого файла. Тем не менее, не похоже, что Cron заботится об этом для меня. Есть мысли, почему это так?

При просмотре file_managed я вижу временный файл, который я хотел бы удалить. При просмотре file_usage я не вижу соответствующей записи.

Обновление - одна дополнительная информация: в большинстве случаев, файл фактически отсутствует. Я полагаю, что это связано с перезагрузкой ОС, очищающей каталог / tmp. Независимо от того, удалит ли system_cron запись file_managed для файла, если фактический файл больше не будет найден?

Эта проблема возникла, так как я начал загружать файлы из собственного мобильного приложения. Имя файла одинаково при каждой загрузке. В некоторых случаях временное имя файла не существует в каталоге / tmp, но запись в file_managed все еще существует с URI этого имени файла. Поэтому я получаю ошибку целостности при сохранении таблицы file_managed. Я планирую обновить приложение, чтобы создать случайное имя файла. А пока я бы хотел почистить базу данных и окружающую «склеивающую» логику, которая управляет этими файлами. Если system_cron сделает все это для меня, тогда отлично. Но из того, что я могу сказать, system_cron не удаляет старые, полностью неиспользуемые (и не имеющие ссылок) записи в file_managed.

lkiss80
источник

Ответы:

8

Drupal автоматически удаляет временные файлы в system_cron () .

Однако файлы Permament, которые не имеют file_usage, не удаляются.

Berdir
источник
Это то, о чем я думал. Тем не менее, записи в file_managed по-прежнему находятся вокруг, даже если в file_usage не существует соответствующих записей и больше не существует никакого действительного файла. Я, должно быть, что-то здесь
упускаю
3
@ lkiss80 Файл не будет удален, если statusв file_managedтаблице нет нуля
Клайв
4
И дополнительно, должно быть старше 6 часов.
Бердир
@Clive - Спасибо. Ваш ответ побудил меня дважды проверить бит состояния. Первоначально я ссылался на книгу, которая неправильно изменила значение этого бита. Еще раз спасибо!
lkiss80