Posted by Muhittin on November 28, 2016 at 7:01pm
Merhaba arkadaşlar.
Senaryo:
Resimler isminde bir içerik türü oluşturdum ve resim yükle isminde bir field ekledim 15 resim yükleme sınırı koydum. (Bu içerik türünü de kayıtlı kullanıcılara açtım kayıtlı kullanıcılar istedikleri kadar yayın yapabilecek.)
Herhangi bir kullanıcı 15 resim yayınladı ama resimler hoşuna gitmedi içeriği tekrar düzenledi ve eski resimlerin hepsini yeni 15 resim ile değiştirdi ve yayınladı.
Sorun bundan sonra;
Yayından kaldırdırılan önceki resimler halen serverde Files klasöründe duruyor ve boşyere hostingde yer kaplıyor.
İçerik düzenleme ve ya silme yaptıktan sonra kullanılmayan dosyaların otomatik olarak silinmesini nasıl yapabilirim?
Comments
Modul
İstediğiniz işi yapan birkaç modul var https://www.drupal.org/project/fancy_file_delete gibi drupal veritabanına aşina iseniz bu işi yapacak bir cron job da oluşturabilirsiniz
$result = db_query("SELECT fid FROM file_managed WHERE NOT EXISTS (SELECT * FROM file_usage WHERE file_managed.fid = file_usage.fid) ");
//Delete file & database entry
for ($i = 1; $i <= $result->rowCount(); $i++) {
$record = $result->fetchObject();
$file = file_load($record->fid);
if ($file != NULL) {
file_delete($file);
} }
mantığında kullanılmayan dosyaları bulup silecek bir cron ayarlayabilirsiniz.
Fancy File Delete ve Audit
Fancy File Delete ve Audit file modüllerini denedim ama dosyaları fiziksel olarak silmedi. Cron deneyeyim inşallah olur.
Drupal Öğrencisi
Facebook Grubu
Burası çok aktif kullanılmıyor sanırım, isterseniz sorunuzu facebooktaki DrupalTurkiye grubuna (https://www.facebook.com/groups/drupalturkiye/) da yazın, orda benim de dahil olduğum birkaç kullanıcı yardımcı olur.
İlgin ve alakan içim çok
İlgin ve alakan içim çok teşekkür ederim.
https://www.drupal.org/project/fancy_file_delete
bu mudül de bir sorun var galiba VBO ile silmiyor ama FID no ile manuel siline biliyor. Şimdilik bununla idare edeceğiz mecburen.
Benim anlamadığım Drupal gibi güzçlü bir yapının çekirdeğinde neden böyle bir sıkıntı var. Bence olması gereken Drupal çekirdeğinde bu ayarların olması. Mesela ben bir ilan sitesi üserinde çalışıyorum, kayıtlı kullanıcılar sürekli resim yükleyecek veya değiştirecek kullanılmayan dosyalar ciddi anlamda hostinge boş yere yer kaplayacak. Bence Drupal çekirdekte default bir seçenek olması kullanılmayan dosyaların silinip silinmeyeceğini seçebileceğimiz.
Burada konu açmadan önce baya bir araştırma yaptım, çok fazla bu konuda issue açılmış ama bu iki modülden başka bir şey yok.
Yardımın için çok teşekkür ederim xtremetawsan.
Drupal Öğrencisi
Başka çözüm...
Aslında şöyle bir çözüm de olabilir, imaj silme fonksiyonuna bir hook yapıp silme esnasında dosyanın gercekten silinmesini sağlayacak bir kod da yazılabilir. Şu aralar elim biraz yoğun ama olmadı size oyle bir modul yazıp atayım.
Bu arada benzer problem Wordpress te de var bir süre sonra çer çöp dosya kaynıyor public klasörü
Eğer öyle bir modül
Eğer öyle bir modül yaparsanız size ben ve bir çok Drupal kullanıcısı minnettar kalacaktır.
Drupal Öğrencisi