Merhaba ilan sitem var ve verilen ilanlar satılıyor, kullanıcı tarafından kaldırılıyor , bazende hiç onaylanmadan siliniyor fakat ftpde tüm resimler saklanıyor hatta 2 yıl oncesinin ilan resmi bile mevcut ben bu resimlerin veri tabanından silinmiş olanları (kullanılmayanları) bulup kaldırmak ftp yi rahatlatmak istiyorum
mysqlde >> ilanlar tablosunda >> id | resim
ftpde ise /images/resimler kalsöründe
Fikirlerinize ihtiyacım var teşekkürler.
FTP. Gereksiz resimlerin silinmesi ?
8
●391
- 14-06-2015, 21:55:58Mysql'de olan ilanların resimlerini geçici olarak farklı bir klasöre taşıyın. Daha sonra şu anda kullandığnız klasör çöp resimlerden ibaret olacaktır, içerisini temizleyip yeniden ilan resimlerini eski yerine taşıyınca çöplerden kurtulmuş olursunuz

+ Olarak yayınlanmayan yada taslak vs. ilanların resimlerini ayrı bir yerde tutmanız çok daha iyi olacaktır ilerde temizlemek açısından. - 14-06-2015, 23:19:12Üyeliği durdurulduniye böyle uğraşsın mantık hatası yapıyorsun.tecnohalil adlı üyeden alıntı: mesajı görüntüle
resim klasorunu listele, veritanından resim alanını listele karşılaştır veritabanında ismi olmayanı sil - 15-06-2015, 05:02:00xRaykan adlı üyeden alıntı: mesajı görüntüle
Basit bir class hazırladım eğer kullanırsan öncelikle yedek alıp önce lokalde test edip işlemi gerçekleştirmeni rica ediyorum test etme fırsatım pek olmadı
class Cleaner{ private $conf = []; private $db; public function __construct($conf){ if(!is_array($conf)) die('Gerekli parametreleri iletin'); $this->conf = [ "MYSQL_HOST" => $conf['MYSQL_HOST'], "MYSQL_USER" => $conf['MYSQL_USER'], "MYSQL_PASS" => $conf['MYSQL_PASS'], "MYSQL_NAME" => $conf['MYSQL_NAME'], "MYSQL_TABLE" => $conf['MYSQL_TABLE'], "MYSQL_FIELD" => $conf['MYSQL_FIELD'], "PATH" => $conf['PATH'] ]; $this->db = new mysqli($conf['MYSQL_HOST'], $conf['MYSQL_USER'], $conf['MYSQL_PASS'], $conf['MYSQL_NAME']); } public function start(){ $thumbs = $this->getThumbs(); //$this->dump($thumbs); if(false == $thumbs) die('İstenilen klasör boş'); foreach($thumbs AS $thumb){ $status = $this->query($thumb); } } private function query($thumb){ $result = $this->db->query('SELECT COUNT(id) AS total FROM '.$this->conf["MYSQL_TABLE"].' WHERE '.$this->conf["MYSQL_FIELD"].' = "'.$thumb.'"')->fetch_object(); if($result->total == 0){ $this->deleteFile($thumb); } } private function getThumbs(){ $path = $this->conf['PATH']; $extensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp']; $files = []; $directory = new DirectoryIterator($path); foreach ($directory as $fileinfo) { if ($fileinfo->isFile()) { $extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION)); if (in_array($extension, $extensions)) { $files[] = $fileinfo->getFilename(); } } } if(empty($files)) return false; return $files; } private function deleteFile($thumb){ unlink($this->conf['PATH']."/".$thumb); $this->success($thumb); } private function success($thumb){ echo ''.$this->conf['PATH'].'/'.$thumb.' Dosyası silindi <hr>'; } private function dump(array $arr){ echo '<pre>'; print_r($arr); echo '</pre>'; } }
Kullanımı
$c = new Cleaner([ "PATH" => "resimler", "MYSQL_HOST" => "localhost", "MYSQL_USER" => "root", "MYSQL_PASS" => "root", "MYSQL_NAME" => "ilanlar", "MYSQL_TABLE" => "ilanlar", "MYSQL_FIELD" => "resim" ]); $c->start();
- 15-06-2015, 14:09:381milyon çöp resim 20bin kullandığı resim varsa bunun neresinde mantık hatası?BHCoder adlı üyeden alıntı: mesajı görüntüle
- 16-06-2015, 05:40:13Üyeliği durduruldubiz ne dedik babacan ? hala mantık hatası yapıyorsun.tecnohalil adlı üyeden alıntı: mesajı görüntüle
veritabanında kayıtlı olmayanları sil dedik
senin yaptığın scriptleri düşünemiyorum
- 16-06-2015, 13:35:27Benim dediğim yöntemlede veritabanında kayıtlı olmayanları siliyor zaten? Farklı yollar izlememiz mantık hatası oluştuğu anlamına gelmez. Vatandaşın işine hangisi kolay gelirse onu uygular, bu kadar basit. Neden bu kadar uzatmaya luzüm görüyorsun ki? Eğer amacın birilerine yardım etmekse fikrini ver işine bak bu kadar basit...BHCoder adlı üyeden alıntı: mesajı görüntüle
Not: Böyle bir kafayla yaptığım scriptleri bırak düşünmeyi hayal dahi edemezsin bilgin olsun. - 16-06-2015, 14:13:15Üyeliği durdurulduprogramcı hızlı analitik düşünür, basit istikrarlı sağlam hangi yol varsa onu kullanır.tecnohalil adlı üyeden alıntı: mesajı görüntüle
senin mantığına bakalım.
birinci işlem :
Mysql'de olan ilanların resimlerini geçici olarak farklı bir klasöre taşıyın.
ikinci işlem
içerisini temizleyip
üçüncü işlem
yeniden ilan resimlerini eski yerine taşıyınca çöplerden kurtulmuş olursunuz
bunlara gerek var mı, doğru formülü söyledik, evet o doğru ve daha mantık demeni beklerdim, biraz kendini geliştirmen lazım, emin ol yaptığın scrptler muhakkak böyle mantık hataları doludur, bunu kabullenmek ayrı bir erdemdir ama sen kabul edemiyorsun ayrı.
neyse hayırlı günler.
