Apakah file yang dikelola akan dihapus jika tidak ada entri yang sesuai di file_usage?


9

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.

Jawaban:


8

Drupal secara otomatis menghapus file sementara di system_cron () .

File Permament yang tidak memiliki file_usage tidak dihapus.


Itulah yang saya pikir. Namun, entri dalam file_managed masih berkeliaran, meskipun tidak ada entri yang sesuai di file_usage, dan tidak ada file yang sebenarnya ada lagi. Saya pasti melewatkan sesuatu di sini ...
lkiss80

3
@ lkiss80 File tidak akan dihapus kecuali memiliki statusnol di file_managedtabel
Clive

4
Dan juga, harus lebih dari 6 jam.
Berdir

@Clive - Terima kasih. Tanggapan Anda mendorong saya untuk memeriksa ulang bit status. Saya awalnya mereferensikan sebuah buku yang salah membalik arti dari bit ini. Terima kasih lagi!
lkiss80
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.