Bagaimana cara mendapatkan daftar semua file gambar yatim?

8

Saya ingin membuat daftar gambar yang tidak lagi digunakan dalam item konten apa pun sehingga dapat dihapus dari disk. Apa metode terbaik untuk menghasilkan daftar seperti itu?

miroxlav
sumber

Jawaban:

5

Saya tidak yakin ada metode terbaik tentang cara melakukan ini. Satu-satunya cara saya bisa memikirkan membutuhkan sedikit usaha. Yaitu, menghasilkan daftar semua gambar dalam tabel konten dalam database (dan berpotensi dalam modul, menu, spanduk, dll ... Setiap tempat di mana gambar direferensikan yang banyak), bandingkan daftar itu dengan semua gambar pada sistem file, lalu bandingkan antara setiap daftar dan hapus gambar yang tidak digunakan.

Jadi ini akan terlihat seperti:

1) Dapatkan daftar semua gambar dalam tabel basis data com_content. Buang semua baris, regex untuk <img src="images/stories/an-image.jpg" />. Cara lain adalah dengan menggunakan metode strip_tags () php dan hanya mengizinkan tag. Saya menemukan ini lebih mudah daripada menulis regex secara umum. Pada dasarnya jalankan skrip php untuk membuat daftar ini untuk Anda sebagai dokumen teks atau csv.

2) Dapatkan daftar semua gambar di situs. Anda dapat menggunakan grep dari baris perintah untuk melakukan ini saya percaya. Anda mungkin dapat melakukannya dengan semacam metode sistem file php rekursif juga.

3) masukkan keduanya ke dalam spreadsheet dan jalankan semacam perbandingan terhadap setiap kolom untuk melihat apakah gambar tersebut digunakan, menyusun daftar gambar yang tidak digunakan di kolom ketiga.

-

Secara pribadi, kecuali jika Anda memiliki banyak gambar, saya tidak yakin ini sepadan dengan usaha. Tetapi Anda harus menentukan bahwa masih menunggu kasus penggunaan Anda. Juga mungkin ada solusi yang jauh lebih sederhana yang harus disarankan orang lain!

Chad Windnagle
sumber
3

Saya tidak mengetahui ekstensi yang ada yang akan melakukannya. Taruhan terbaik Anda adalah menulis skrip yang memeriksa setiap gambar dengan tabel di basis data tempat konten dapat disimpan untuk melihat apakah mereka digunakan.

Michael
sumber
3

Jika Anda memiliki log akses, Anda mungkin dapat menarik semua file gambar yang diminta dalam X bulan terakhir (Anda harus bermain dengan semua data ini). Jadi ini sangat mungkin digunakan di situs Anda yang sebenarnya (belum 100%). Bergantung pada konten dan struktur situs Anda dan jika situs Anda tidak terlalu besar (yaitu 1 juta artikel), sangat mungkin bahwa sisanya mungkin tidak digunakan (sekali lagi tidak 100%).

Saya menemukan solusi ini mudah. Cadangkan gambar sebelum dihapus. Anda dapat melacak nanti untuk 404 kesalahan saat mencoba membuka file tertentu dan Anda dapat memutuskan untuk memulihkannya.

Ini adalah solusi kotor, tetapi sebenarnya tidak ada cara yang mudah. Pilihan terbaik adalah mengikuti saran Chad dan menulis parser Anda sendiri.

Ivo
sumber
Ide bagus, terima kasih. Di log akses penyedia webhosting saya tidak dapat diakses oleh kami pelanggan, tetapi jawaban ini masih bisa membuat pembaca lain merasa sedih.
miroxlav
0

Meskipun tidak ada ekstensi saat pertanyaan diajukan, per Agustus 2018 ada setidaknya beberapa ekstensi yang tampaknya dapat menemukan dan menghapus gambar-gambar yatim:

VX orphanImages (ekstensi berbayar)

"VX orphanImages plugin memindai folder gambar situs Joomla! Anda untuk menemukan item, yang tidak digunakan dalam konten apa pun di situs. Plugin ini menggunakan komponen Media inti untuk menandai gambar-gambar yatim dalam daftar, sehingga Anda dapat memutuskan apakah akan menyimpan atau menghapusnya. "

ImageManager (versi gratis / berbayar)

"ImageManager untuk Joomla! Memungkinkan Anda untuk memindahkan dan mengganti nama gambar tanpa kehilangan tautan gambar di Artikel dan Modul HTML Khusus. Cukup seret & letakkan gambar Anda untuk menyusun ulang dan membersihkan situs web Anda. Ia juga dapat membuat daftar semua gambar yang tidak digunakan dan menghapusnya. . "

Neil Robertson
sumber