it-swarm.it

Come ottenere l'elenco di tutti i file di immagine orfani?

Vorrei creare un elenco di immagini non più utilizzate in nessun elemento di contenuto in modo che possano essere eliminate dal disco. Qual è il metodo migliore per generare un tale elenco?

8
miroxlav

Non sono sicuro che esista un metodo migliore su come farlo. L'unico modo in cui riesco a pensare richiede un po 'di sforzo. Cioè, generare un elenco di tutte le immagini nella tabella dei contenuti nel database (e potenzialmente in moduli, menu, banner, ecc ... Qualsiasi luogo in cui le immagini sono referenziate, che è molto), confrontare tale elenco con tutte le immagini sul file system, quindi confrontare tra ciascun elenco e rimuovere le immagini che non vengono utilizzate.

Quindi questo sembrerebbe:

1) Ottieni un elenco di tutte le immagini nella tabella del database di com_content. Scarica tutte le righe, regex per <img src="images/stories/an-image.jpg" />. Un altro modo è utilizzare il metodo strip_tags () di php e consentire solo il tag. Lo trovo più facile che scrivere una regex in generale. Fondamentalmente esegui uno script php per creare questo elenco per te come documento di testo o CSV.

2) Ottieni un elenco di tutte le immagini sul sito. Potresti usare grep dalla riga di comando per farlo credo. Probabilmente potresti farlo anche con una sorta di metodo di filesystem php ricorsivo.

3) inseriscili entrambi in un foglio di calcolo ed esegui una sorta di confronto con ciascuna colonna per vedere se l'immagine viene utilizzata, compilando un elenco di immagini non utilizzate in una terza colonna.

-

Personalmente, a meno che tu non abbia una tonnellata di immagini, non sono sicuro che valga la pena. Ma dovrai determinarlo in attesa del tuo caso d'uso. Inoltre potrebbe esserci una soluzione molto più semplice che qualcun altro dovrà suggerire!

5
Chad Windnagle

Se disponi dei tuoi registri di accesso, potresti essere in grado di estrarre tutti i file di immagine richiesti negli ultimi X mesi (dovrai giocare con tutti questi dati). Quindi questi sono molto probabilmente in uso nel tuo sito reale (ma non al 100%). A seconda del contenuto e della struttura del sito e se il tuo sito non è davvero enorme (ovvero 1 milione di articoli), è molto probabile che i rimanenti non siano probabilmente in uso (di nuovo non al 100%).

Trovo questa soluzione semplice. Eseguire il backup delle immagini prima dell'eliminazione. È possibile monitorare in seguito per 404 errori nel tentativo di aprire file specifici e si può decidere di ripristinarli.

È una soluzione sporca, ma non esiste davvero un modo semplice. L'opzione migliore sarebbe seguire i consigli di Chad e scrivere il proprio parser.

3
Ivo

Non sono a conoscenza di un'estensione esistente che lo farebbe. La soluzione migliore sarebbe quella di scrivere uno script che controlli ogni immagine rispetto alle tabelle nel database in cui il contenuto può essere memorizzato per vedere se sono in uso.

3
Michael

Sebbene non esistessero estensioni quando è stata posta la domanda, a partire da agosto 2018 ci sono almeno un paio di estensioni che apparentemente possono trovare ed eliminare immagini orfane:

VX orphanImages (estensione a pagamento)

"Il plug-in VX orphanImages esegue la scansione della cartella delle immagini del sito Joomla! Per trovare elementi che non sono utilizzati in alcun contenuto del sito. Utilizza il componente Media principale per contrassegnare le immagini orfane nell'elenco, in modo da poter decidere se conservarle o rimuoverle. "

ImageManager (versioni gratuite/a pagamento)

"ImageManager per Joomla! Ti consente di spostare e rinominare le immagini senza perdere il collegamento delle immagini negli articoli e nei moduli HTML personalizzati. Basta trascinare e rilasciare le immagini per ristrutturare e ripulire il tuo sito Web. Può anche elencare tutte le immagini inutilizzate ed eliminarle ".

0
Neil Robertson