Я використовую сервісний модуль для реалізації API REST. Один ресурс дозволяє POSTs із завантаженими файлами. Під час функції попередньої обробки послуг я зберігаю файл у каталогу temp. Під час функції післяобслуговування послуг я переміщую файл у приватний каталог, викликаю file_usage_add та зберігаю хост-об'єкт. Коли виникає помилка перевірки між збереженням файлу temp та переміщенням файлу temp на постійне місце, я не видаляю явно файл temp. Я думав, що друпальський крон подбає про це за мене, оскільки жодна запис цього файлу не існує у file_usage. Однак не видається, що cron про це піклується про мене. Будь-які думки, чому це?
Переглядаючи file_managed, я бачу тимчасовий файл, який я хотів би видалити. Переглядаючи file_usage, я не бачу жодної відповідної записи.
Оновлення - ще одна інформація: у більшості випадків файл фактично відсутній. Я вважаю, що це пов’язано з очищенням перезавантаження ОС з / tmp-каталогу. Незважаючи на те, чи все-таки system_cron видалить файл file_managed для файлу, якщо фактичний файл більше не знайдеться?
Ця проблема виникла з того моменту, коли я почав завантажувати файли з нативного мобільного додатка. Ім'я файлу однакове для кожного завантаження. Є деякі випадки, коли ім'я файлу temp не існує в каталозі / tmp, але запис у file_managed все ще існує з URI цього імені файлу. Тому я отримую помилку цілісності, коли зберігається таблиця file_managed. Я планую оновити додаток, щоб створити випадкове ім’я файлу. Тим часом я хотів би очистити базу даних та оточуючу логіку "клею", яка керує цими файлами. Якщо system_cron зробить це все для мене, то здорово. Але з того, що я можу сказати, system_cron не видаляє старі, повністю невикористані (і нерозподілені) записи в file_managed.