(PHP 4 >= 4.3.0, PHP 5)
ftp_nb_get — Überträgt eine Datei von dem FTP-Server und speichert sie lokal (nicht blockierend)
ftp_nb_get() retrieves a remote file from the FTP server, and saves it into a local file.
Der Unterscheid zwischen dieser Funktion und ftp_get() ist, dass diese Funktion die Datei asynchron überträgt, so dass Ihr Programm noch andere Operationen ausführen kann während die Datei heruntergeladen wird.
Der Verbindungshandler der FTP-Verbindung.
Der Pfad zur lokalen Datei (wird überschrieben falls die Datei schon existiert).
Der Pfad zur Datei auf dem Server.
Der Transfer-Modus. Muss entweder FTP_ASCII oder FTP_BINARY sein.
Gibt FTP_FAILED oder FTP_FINISHED oder FTP_MOREDATA zurück.
Beispiel #1 ftp_nb_get()-Beispiel
<?php
// Download initialisieren
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Irgendwas machen
echo ".";
// Download fortsetzen
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "Es gab einen Fehler bei der Übertragung.";
exit(1);
}
?>
Beispiel #2 Einen Download mit ftp_nb_get() fortsetzen
<?php
// Initialisieren
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// ODER: $ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
// FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// Irgendwas machen
echo ".";
// Download fortsetzen
$ret = ftp_nb_continue($my_connection);
}
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($my_connection, FTP_AUTOSEEK, false);
// Initialisieren
$ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {
/* ... */
// Download fortsetzen
$ret = ftp_nb_continue($my_connection);
}
?>
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'.