I file gestiti verranno eliminati se non esiste alcuna voce corrispondente in file_usage?


9

Sto usando il modulo servizi per implementare un'API REST. Una risorsa consente i POST con file caricati. Durante una funzione di pre-elaborazione dei servizi, salvo il file nella directory temporanea. Durante una funzione di post-elaborazione dei servizi, sposto il file in una directory privata, chiamo file_usage_add e salvo l'entità host. Quando si verifica un errore di convalida tra il salvataggio del file temporaneo e lo spostamento del file temporaneo in una posizione permanente, non sto eliminando esplicitamente il file temporaneo. Pensavo che drupal cron se ne sarebbe occupato per me, dato che non esiste alcuna voce per questo file in file_usage. Tuttavia, non sembra che cron si stia occupando di questo per me. Qualche idea sul perché questo sia?

Durante la revisione di file_managed, vedo il file temporaneo che vorrei eliminare. Durante la revisione di file_usage, non vedo alcun record corrispondente.

Aggiornamento: un'ulteriore informazione: nella maggior parte dei casi, il file è effettivamente mancante. Credo che ciò sia dovuto al riavvio del sistema operativo che cancella la directory / tmp. Indipendentemente da ciò, system_cron rimuoverà comunque la voce file_managed per un file se il file effettivo non fosse più trovato?

Questo problema è sorto da quando ho iniziato a caricare file da un'app mobile nativa. Il nome del file è lo stesso per ogni caricamento. Ci sono alcuni casi in cui il nome file temporaneo non esiste nella directory / tmp, ma esiste ancora un record in file_managed con un URI di quel nome file. Quindi ricevo un errore di integrità quando viene salvata la tabella file_managed. Ho intenzione di aggiornare l'app per creare un nome file casuale. Nel frattempo, vorrei ripulire il database e la logica "colla" circostante che gestisce questi file. Se system_cron farà tutto per me, allora fantastico. Ma da quello che posso dire, system_cron non sta rimuovendo i record vecchi, completamente inutilizzati (e non referenziati) in file_managed.

Risposte:


8

Drupal elimina automaticamente i file temporanei in system_cron () .

I file permament che non hanno file_usage non vengono comunque eliminati.


È quello che pensavo. Tuttavia, le voci in file_managed sono ancora in giro, anche se non esistono voci corrispondenti in file_usage e non esiste più alcun file effettivo. Mi manca qualcosa qui ...
lkiss80,

3
@ lkiss80 Il file non verrà eliminato a meno che non abbia uno statuszero nella file_managedtabella
Clive

4
Inoltre, deve avere più di 6 ore.
Berdir,

@Clive - Grazie. La tua risposta mi ha spinto a ricontrollare il bit di stato. Inizialmente ho fatto riferimento a un libro che ha erroneamente capovolto il significato di questo bit. Grazie ancora!
lkiss80,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.