Чи будуть видалені керовані файли, якщо у file_usage не існує відповідної записи?


9

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

Відповіді:


8

Drupal автоматично видаляє тимчасові файли в system_cron () .

Файли постійного характеру, які не мають файлового коду, не видаляються.


Це те, що я думав. Однак записи у file_managed все ще зависають, хоча у file_usage немає відповідних записів і фактичного файлу вже немає. Я, мабуть, чогось тут пропускаю ...
lkiss80

3
@ lkiss80 Файл не буде видалено, якщо у ньому немає statusнуля в file_managedтаблиці
Clive

4
І крім того, повинні бути старшими на 6 годин.
Бердір

@Clive - спасибі Ваша відповідь запропонувала мені двічі перевірити біт статусу. Я спочатку посилався на книгу, яка неправильно перевернула значення цього біта. Знову дякую!
lkiss80
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.