(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)
$ftp,$local_filename,$remote_filename,$mode = FTP_BINARY,$offset = 0ftp_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.
ftpEine FTP\Connection-Instanz.
local_filenameDer Pfad zur lokalen Datei (wird überschrieben, falls die Datei schon existiert).
remote_filenameDer Pfad zur Datei auf dem Server.
mode
Der Transfer-Modus. Muss entweder FTP_ASCII
oder FTP_BINARY sein.
offsetDie Position in der Datei auf dem Server, an der der Download beginnen soll.
Gibt FTP_FAILED, FTP_FINISHED
oder FTP_MOREDATA zurück oder false, wenn die lokale
Datei nicht geöffnet werden kann
| Version | Beschreibung |
|---|---|
| 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.
|
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) {
/* ... */
// Download fortsetzen
$ret = ftp_nb_continue($ftp);
}
?>
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'.