Prüfen ob Link-Bild vorhanden ist, wenn nicht Bild auf Server löschen?

Hiho,

du könntest per readdir() die Datein aus deinem Bilderverzeichnis auslesen und in einer while-Schleife dann oben genannten SQL-Code benutzen. Dann prüfst du ob nach der Abfrage mysql_num_rows() 0 ergibt. Falls Ja, löschst du das Bild per unlink(), falls Nein, lässt du es einfach da ;)

PHP:
mysql_connect("localhost", "name", "passwort"); // MySQL-Verbindung herstellen
mysql_select_db("datenbank");

$pfad = opendir("pics"); // Bild-Verzeichnis öffnen
chdir("pics"); // ins Bild-Verzeichnis wechseln
while($bild = readdir($pfad)) { // Datein auslesen
	if(is_file($bild)) { // . und .. ausschließen
		$query = mysql_query("SELECT * FROM tabelle WHERE text LIKE '%http://meineurl.de/pics/$bild%'"); // MySQL-Abfrage
		if(mysql_num_rows($query) == 0) { // Bild im Beitrag vorhanden?
			unlink($bild); // Wenn Nein, löschen
		}
	}
}

closedir($pfad);
mysql_close();
ACHTUNG: Wenn sich noch andere Dateien in dem Ordner befinden und nicht in einem Beitrag verlinkt sind würden die auch gelöscht werden! Das könnte man verhindern indem man anstatt is_file() den MIME-Typ prüft.


Bei einigen Tausend Datein, wie du sagst, kann das schon ein Weilchen dauern :D

Lg
 
Zuletzt bearbeitet:
Also das pass ich dann ein bisschen an, und leg die Datei in den Imageordner, und sobald ich die aufrufe sollten die Bilder die nicht mehr vorhanden sind vom server gelöscht werden? Leider ist da noch eine .htaccess Datei in dem Ordner! Wird diese auch gelöscht dadurch?
 
Hiho,

PHP:
mysql_connect("localhost", "name", "passwort"); // MySQL-Verbindung herstellen DATEN ANPASSEN
mysql_select_db("datenbank"); // Datenbank auswählen DATEN ANPASSEN

$pfad = "pics"; // VERZEICHNIS ANPASSEN
$dir = opendir($pfad); // Bild-Verzeichnis öffnen
chdir($pfad); // ins Bild-Verzeichnis wechseln
while($bild = readdir($dir)) { // Datein auslesen 
    if(is_file($bild) and $bild != ".htaccess") { // . und .. ausschließen 
        $query = mysql_query("SELECT * FROM tabelle WHERE text LIKE '%http://meineurl.de/$pfad/$bild%'"); // MySQL-Abfrage DATEN + URL ANPASSEN
        if(mysql_num_rows($query) == 0) { // Bild im Beitrag vorhanden? 
            unlink($bild); // Wenn Nein, löschen 
        } 
    } 
} 

closedir($dir); 
mysql_close();

damit schließt du dann die .htaccess aus. Die Datei in der der Code steht würde im Verzeichnis über deinem Bilderverzeichnis sein. In meinem Beispiel heißt der Bilder-Ordner "pics", was du dann auch noch anpassen müsstest ;) Hab mal dazugeschrieben was du alles anpassen müsstest und den Code etwas angeändert.

Lg
 
Zuletzt bearbeitet:
Also erstmal danke für die ganze Hilfe! Sowas erlebt man echt selten in einem Forum, das einem so direkt geholfen wird! Einfach super Leute! Ich werde das ganze morgen mal testen, und sage euch dann bescheid!

Ps: Die Datei wird schon beim Aufruf direkt ausgeführt, so wie ich das sehe. ich denke dann kann ich die ab und zu mit einem Cronjob automatisch aufrufen lassen, und dann brauch ich mich nicht mehr darum zu kümmern!

Danke nochmal und weiter so, echt super Forum!! :)
 
Zurück