ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ftp_nb_get Überträgt eine Datei vom FTP-Server und speichert sie lokal (nicht blockierend)

Beschreibung

ftp_nb_get(
    FTP\Connection$ftp,
    string$local_filename,
    string$remote_filename,
    int$mode = FTP_BINARY,
    int$offset = 0
): int|false

ftp_nb_get() ruft eine Datei vom FTP-Server ab und speichert sie in einer lokalen Datei.

Der Unterschied zwischen dieser Funktion und ftp_get() ist, dass diese Funktion die Datei asynchron überträgt, sodass Ihr Programm noch andere Operationen ausführen kann, während die Datei heruntergeladen wird.

Parameter-Liste

ftp

Eine FTP\Connection-Instanz.

local_filename

Der Pfad zur lokalen Datei (wird überschrieben, falls die Datei schon existiert).

remote_filename

Der Pfad zur Datei auf dem Server.

mode

Der Transfer-Modus. Muss entweder FTP_ASCII oder FTP_BINARY sein.

offset

Die Position in der Datei auf dem Server, an der der Download beginnen soll.

Rückgabewerte

Gibt FTP_FAILED, FTP_FINISHED oder FTP_MOREDATA zurück oder false, wenn die lokale Datei nicht geöffnet werden kann

Changelog

VersionBeschreibung
8.1.0 Der Parameter ftp erwartet nun eine FTP\Connection-Instanz; vorher wurde eine Ressource erwartet.
7.3.0 Der Parameter mode ist nun optional. Zuvor war er verpflichtend.

Beispiele

Beispiel #1 ftp_nb_get()-Beispiel

<?php

// Download iniitieren
$ret = ftp_nb_get($ftp, "test", "README", FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

// Irgendwas machen
echo ".";

// Download fortsetzen
$ret = ftp_nb_continue($ftp);
}
if (
$ret != FTP_FINISHED) {
echo
"Es gab einen Fehler bei der Übertragung.";
exit(
1);
}
?>

Beispiel #2 Einen Download mit ftp_nb_get() fortsetzen

<?php

// Iniitieren
$ret = ftp_nb_get($ftp, "test", "README", FTP_BINARY,
filesize("test"));
// ODER: $ret = ftp_nb_get($ftp, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

// Irgendwas machen
echo ".";

// Download fortsetzen
$ret = ftp_nb_continue($ftp);
}
if (
$ret != FTP_FINISHED) {
echo
"Es gab einen Fehler bei der Übertragung.";
exit(
1);
}
?>

Beispiel #3 Einen Download mit Hilfe von ftp_nb_get() an Position 100 fortsetzen und in eine neue Datei schreiben

<?php

// Autoseek deaktivieren
ftp_set_option($ftp, FTP_AUTOSEEK, false);

// Initialisieren
$ret = ftp_nb_get($ftp, "newfile", "README", FTP_BINARY, 100);
while (
$ret == FTP_MOREDATA) {



In dem obigen Beispiel ist newfile 100 Bytes kleiner als README auf dem FTP-Server, weil wir erst beim Offset 100 angefangen haben zu lesen. Hätten wir FTP_AUTOSEEK nicht deaktiviert, so bestünden die ersten 100 Bytes von newfile aus '\0'.

Siehe auch

  • ftp_nb_fget() - Ruft eine Datei vom FTP-Server ab und schreibt sie in eine lokale Datei (nicht-blockierend)
  • ftp_nb_continue() - Nimmt die Übertragung einer Datei wieder auf (nicht-blockierend)
  • ftp_fget() - Lädt eine Datei vom FTP-Server und speichert sie in eine geöffnete Datei
  • ftp_get() - Lädt eine Datei von einem FTP-Server herunter
To Top