Dateien löschen

ShooterMS

Mitglied
Ein Skript kopiert per FTP einen kompletten Verzeichnisbaum von einem Server auf einen anderen. Nun soll vorher aber das eventuell schon existierende Verzeichnis komplett gelöscht werden, bevor die neuen Dateien überspielt werden. Da es sich um viele Dateien und viele Unterordner handelt, dauert ein Löschen per FTP sehr lange und ist zudem umständlich. Gibt es eine Alternative ein bestimmtes Verzeichnis zu löschen auf einem anderen Server?

Danke
 

redlama

Erfahrenes Mitglied
Ich weiß zwar nicht, ob das funktioniert, aber Du könntest versuchen, erst alle Dateien in dem Verzeichnis via unlink() zu löschen und dann das Verzeichnis selbst via rmdir() zu löschen!

redlama
 

ShooterMS

Mitglied
unlink() funktioniert nur, wenn das Skript auf dem selben Server läuft. Das Skript wäre nicht das Problem, aber wie bekomme ich es gestartet, wenn das andere auf einem anderen Server läuft?
 

ShooterMS

Mitglied
du meinst, das erste skript springt per header() zum Löschskript und dieses dann wieder zurück?
Die Überlegung hat ich auch schon, allerdings arbeitet das erste Skript eine Schleife ab und soll das zweite Skript nur bei bestimmten Bedingungen ausführen. Ist nicht so einfach, an der selben Position mittels Parametern wieder anzuknüpfen. Hoffe noch auf eine andere Möglichkeit.
 

Nils Hitze

Admin a.D.
Ich hatte ein ähnliches Problem mit einem Script das Bilder von
anderen Seiten auf meinen Server überspielen sollte. Da mein
Server kein FTP beherrscht habe ich über Bande gespielt und
den anderen Script per FSOCKOPEN angerufen, damit er mir
das Bild abholt und sich auf meinen eigenen Server per FTP einlogt
um das Bild zu überspielen.

Etwas ähnliches würde ich dir empfehlen. Du rufst deinen
Löschenscript über Fsockopen an und gibst ihm den Namen
der zu löschenden Datei. Danach springt deine Schleife zur
nächsten Datei. Okay?

PHP:
$url		=	'http://test.domain.de/ftp_delete.php?file='.rawurlencode($file);
	
$url_parsed	=	parse_url($url);
$host		=	$url_parsed["host"];
$path		=	$url_parsed["path"];

$fp = fsockopen($host, 80, $errno, $errstr, 30);
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n\r\n";
	
fwrite($fp, $out);
fclose($fp);