rename oder Copy / unlink Geschwindigkeit?
hawkmaster
- php
0 Rouven
Hallo zusammen,
Ich möchte per PHP Dateien von einem Verzeichnis in ein anderes verschieben. (Auf Windows)
Bisher machte ich dies mit;
copy($prnfile, $dest_prnfile);
unlink($prnfile);
Man könnte es ja aber auch nur mit "rename" machen.
rename($prnfile,$dest_prnfile);
Bringt das etwas von der Performance bzw. der Geschwindigkeit her?
Gruss und danke
hawk
Hello,
Bringt das etwas von der Performance bzw. der Geschwindigkeit her?
ich kann dir gerade nicht sagen, wie PHP das implementiert hat, aber ich empfehle dir einfach nur mit dem Explorer den Vergleich zu machen - verschieben ist lediglich ein Umbiegen im Dateisystem, da werden keine Daten bewegt. Es ist damit viel schneller als die Daten zu kopieren und anschließend den alten Verzeichniseintrag zu entfernen.
MfG
Rouven
Hi,
verschieben ist lediglich ein Umbiegen im Dateisystem, da werden keine Daten bewegt. Es ist damit viel schneller als die Daten zu kopieren und anschließend den alten Verzeichniseintrag zu entfernen.
diese Aussage ist richtig, solange Quell- und Zielpfad auf derselben Partition (Windows: auf demselben logischen Laufwerk) liegen.
Sobald Quelle und Ziel auf verschiedenen Partitionen liegen, ist der Vergleich müßig, dann geht's nicht anders als erst zu kopieren, dann zu löschen. Das macht PHP aber AFAIK selbständig.
Aber es gibt außer dem Geschwindigkeitsvorteil noch ein weiteres Argument fürs Verschieben (bzw. gegen die copy+delete-Methode). Wenn ich eine Datei erst kopiere und dann das Original lösche, brauche ich zwischendurch den doppelten Speicherplatz auf dem Datenträger, da die Datei für einen kurzen Moment in zwei Verzeichnissen gleichzeitig existiert. Beim Verschieben (rename) wird dagegen nur der Verzeichniseintrag verschoben, es entsteht kein zusätzlicher Platzbedarf.
So long,
Martin