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();