Saya menggunakan modul layanan untuk mengimplementasikan API REST. Satu sumber daya memungkinkan POST dengan file yang diunggah. Selama fungsi pra-proses layanan saya menyimpan file ke direktori temp. Selama fungsi pasca-layanan layanan, saya memindahkan file ke direktori pribadi, memanggil file_usage_add, dan menyimpan entitas host. Ketika kesalahan validasi terjadi antara menyimpan file temp dan memindahkan file temp ke lokasi permanen, saya tidak secara eksplisit menghapus file temp. Saya pikir drupal cron akan menangani ini untuk saya, karena tidak ada entri untuk file ini ada di file_usage. Namun, tampaknya cron tidak menangani ini untuk saya. Adakah pemikiran mengapa ini terjadi?
Saat meninjau file_managed, saya melihat file sementara yang ingin saya hapus. Saat meninjau file_usage, saya tidak melihat catatan yang sesuai.
Perbarui - Satu info tambahan: dalam kebanyakan kasus, file tersebut sebenarnya hilang. Saya percaya ini karena OS reboot membersihkan direktori / tmp. Apapun, apakah system_cron masih menghapus entri file_managed untuk file jika file yang sebenarnya tidak ditemukan lagi?
Masalah ini muncul sejak saya mulai mengunggah file dari aplikasi seluler asli. Nama filenya sama setiap mengunggah. Ada beberapa kasus di mana nama file temp tidak ada di direktori / tmp, tetapi catatan di file_managed masih ada dengan URI dari nama file itu. Jadi saya mendapatkan kesalahan integritas ketika tabel file_managed disimpan. Saya berencana memperbarui aplikasi untuk membuat nama file acak. Sementara itu, saya ingin membersihkan database dan logika "lem" yang mengatur file-file ini. Jika system_cron akan melakukan semuanya untuk saya, maka itu bagus. Tapi dari apa yang saya tahu, system_cron tidak menghapus catatan lama, yang sama sekali tidak digunakan (dan tidak direferensikan) dalam file_managed.