Я использую сервисный модуль для реализации 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.