PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ordner die nicht mehr gebraucht werden löschen


shox
02.04.2005, 17:46:53
hallo habe ein kleines problem. ich habe eine db in der ich eine id habe zu jedem eintrag habe ich ein ordner der name ist die id. nun würde ich gehrne die ordner löschen die nicht mehr in der db vorkommen.

das habe ich bis nun allerdings läuft dies nicht wirklich :-)

//ordner erstellen und löschen
$dir = realpath( "../bilder/autobilder" );
$sql = "SELECT car_id FROM car ORDER BY car_id ASC";

$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
$car_id = $row['car_id'];

//ordner löschen
$dir2 = realpath( "../bilder/autobilder" );
$handle = opendir($dir2);

while($file = readdir($handle)) {
if ($file != "." && $file != ".." && $file != $car_id) {
$handle2 = opendir($dir2."/".$car_id);
while($file2 = readdir($handle2)) {
if ($file != "." && $file != "..") {
unlink($dir2."/".$file."/".$file2);
}
}
closedir($handle2);
rmdir($dir2."/".$file);
}
}
closedir($handle);


dank für die hilfe

|Coding
02.04.2005, 18:02:11
Verzeichnisse müssen meines Wissens nach immer rekursiv gelöscht werden. Schau dir dazu mal diesen Artikel an: Rekursive/Iterative Funktionen (http://www.selfphp.de/tipps_tricks/programmiertechniken/rekurive_iterative_funktionen.php) (Muss Du nur zur Datei-/Verzeichnis-Löschung umschreiben.)

Noch was:
Wenn Du [php][/php ] (ohne das Leerzeichen) um deinen Code schreibst, dann brauchst Du den nicht selbst an malen :-)

Small-Talk
02.04.2005, 18:42:58
oder einfach den dazugehörigen shell-befehl nehmen.
Kann jetzt allerdings nicht sagen, ob es vielleicht schneller wäre das in PHP zu lösen. - Sollte man vorher testen

linux:

$file = [Datei/Verzeichnis]
exec( 'rm -Rf '.$file, $output );


ich würde dafür aber auch eher eine Index-Datei schreiben, mit den Verzeichnissen, die gelöscht werden sollen und die Verzeichnisse dann mit nem cron löschen. So wird dein script schneller beendet und der user bekommt schneller die daten. id sollten ja auch nach dem löschen nicht mehr vergeben werden

Wenn du später die Dateien vielleicht wieder herstellen möchtest natürlich nicht löschen soldern zum beispiel in den datei packen (linux: tar --help)