• 14-06-2015, 20:16:18
    #1
    Üyeliği durduruldu
    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.
  • 14-06-2015, 21:55:58
    #2
    Mysql'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
    #3
    Üyeliği durduruldu
    tecnohalil adlı üyeden alıntı: mesajı görüntüle
    Mysql'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.
    niye böyle uğraşsın mantık hatası yapıyorsun.

    resim klasorunu listele, veritanından resim alanını listele karşılaştır veritabanında ismi olmayanı sil
  • 15-06-2015, 05:02:00
    #4
    xRaykan adlı üyeden alıntı: mesajı görüntüle
    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.

    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:38
    #5
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    niye böyle uğraşsın mantık hatası yapıyorsun.

    resim klasorunu listele, veritanından resim alanını listele karşılaştır veritabanında ismi olmayanı sil
    1milyon çöp resim 20bin kullandığı resim varsa bunun neresinde mantık hatası?
  • 15-06-2015, 19:24:48
    #6
    Üyeliği durduruldu
    Öncelikle ilginiz için teşekkür ederim hemen kontrol ediyorum.
  • 16-06-2015, 05:40:13
    #7
    Üyeliği durduruldu
    tecnohalil adlı üyeden alıntı: mesajı görüntüle
    1milyon çöp resim 20bin kullandığı resim varsa bunun neresinde mantık hatası?
    biz ne dedik babacan ? hala mantık hatası yapıyorsun.
    veritabanında kayıtlı olmayanları sil dedik

    senin yaptığın scriptleri düşünemiyorum
  • 16-06-2015, 13:35:27
    #8
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    biz ne dedik babacan ? hala mantık hatası yapıyorsun.
    veritabanında kayıtlı olmayanları sil dedik

    senin yaptığın scriptleri düşünemiyorum
    Benim 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...

    Not: Böyle bir kafayla yaptığım scriptleri bırak düşünmeyi hayal dahi edemezsin bilgin olsun.
  • 16-06-2015, 14:13:15
    #9
    Üyeliği durduruldu
    tecnohalil adlı üyeden alıntı: mesajı görüntüle
    Benim 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...

    Not: Böyle bir kafayla yaptığım scriptleri bırak düşünmeyi hayal dahi edemezsin bilgin olsun.
    programcı hızlı analitik düşünür, basit istikrarlı sağlam hangi yol varsa onu kullanır.
    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.