Zum Inhalt springen

ftp_nb_fput()

Verständnis der PHP-Funktion ftp_nb_fput()

Die ftp_nb_fput()-Funktion ist eine integrierte PHP-Funktion, die eine Datei im nicht-blockierenden Modus auf einen FTP-Server hochlädt. In diesem Artikel werden wir die Funktion im Detail besprechen und einen umfassenden Leitfaden zur Verwendung in Ihren PHP-Projekten bereitstellen.

Was ist ftp_nb_fput()?

Die ftp_nb_fput()-Funktion lädt eine Datei im nicht-blockierenden Modus auf einen FTP-Server hoch. Sie akzeptiert vier erforderliche Parameter und einen optionalen Parameter:

  1. ftp_stream: Die Verbindungs-ID, die von ftp_connect() zurückgegeben wird.
  2. remote_file: Der Pfad zur Remote-Datei auf dem FTP-Server.
  3. handle: Ein geöffneter Dateizeiger auf die lokale Datei.
  4. mode: Der Übertragungsmodus, entweder FTP_ASCII oder FTP_BINARY.
  5. startpos (optional): Die Position in der Remote-Datei, an der der Upload beginnen soll. Standardwert ist 0.

Die Funktion gibt eine der folgenden Konstanten zurück: FTP_SUCCESS (Upload abgeschlossen), FTP_MOREDATA (weitere Daten müssen gelesen werden) oder FTP_FAILED (ein Fehler ist aufgetreten).

Syntax von ftp_nb_fput()

Die Syntax der ftp_nb_fput()-Funktion lautet wie folgt:

Syntax von ftp_nb_fput()

php
int ftp_nb_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )

Die Funktion benötigt vier erforderliche Parameter (ftp_stream, remote_file, handle und mode) sowie einen optionalen Parameter (startpos). Der Parameter ftp_stream ist die Verbindungs-ID, die von ftp_connect() zurückgegeben wird. Der Parameter remote_file ist der Pfad zur Remote-Datei auf dem FTP-Server. Der Parameter handle ist ein geöffneter Dateizeiger im lokalen Dateisystem. Der Parameter mode gibt den Übertragungsmodus an, entweder FTP_ASCII oder FTP_BINARY. Der Parameter startpos gibt die Position in der Remote-Datei an, an der der Upload beginnen soll. Standardmäßig ist startpos auf 0 gesetzt, was bedeutet, dass der Upload am Anfang der Datei beginnt.

Verwendung von ftp_nb_fput()

Um die ftp_nb_fput()-Funktion zu verwenden, müssen Sie zunächst eine Verbindung zum FTP-Server mit der ftp_connect()-Funktion herstellen. Hier ist ein Beispiel:

Verwendung von ftp_nb_fput()

php
<?php

// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');

// Login with your FTP credentials
ftp_login($conn, 'username', 'password');

// Enable passive mode to prevent transfer issues
ftp_pasv($conn, true);

// Open a file for reading
$handle = fopen('local_file.txt', 'r');

// Initiate an asynchronous FTP operation
$res = ftp_nb_fput($conn, 'remote_file.txt', $handle, FTP_BINARY);

// Continue the asynchronous FTP operation
while ($res == FTP_MOREDATA) {
    $res = ftp_nb_continue($conn);
}

// Check for errors
if ($res != FTP_FAILED && $res != FTP_SUCCESS) {
    echo "FTP upload failed.\n";
}

// Close the file
fclose($handle);

// Close the FTP connection
ftp_close($conn);

In diesem Beispiel stellen wir eine Verbindung zum FTP-Server mit der ftp_connect()-Funktion her. Anschließend melden wir uns mit unseren FTP-Zugangsdaten über die ftp_login()-Funktion an. Wir aktivieren den Passivmodus mit ftp_pasv(), um häufige Übertragungsprobleme zu vermeiden. Wir öffnen eine Datei zum Lesen mit der fopen()-Funktion und starten eine asynchrone FTP-Operation mit der ftp_nb_fput()-Funktion. Wir setzen die Operation mit der ftp_nb_continue()-Funktion fort und schließen die Datei sowie die FTP-Verbindung.

Fehlerbehandlung in ftp_nb_fput()

Es ist wichtig, Fehler bei der Verwendung der ftp_nb_fput()-Funktion ordnungsgemäß zu behandeln. Die Funktion gibt spezifische Konstanten statt eines Booleschen Werts zurück, daher müssen Sie auf FTP_FAILED prüfen, um Fehler zu erkennen. Hier ist ein Beispiel für die Fehlerbehandlung:

Fehlerbehandlung in ftp_nb_fput()

php
<?php

// Assume $conn is already established and logged in
$handle = fopen('local_file.txt', 'r');
$res = ftp_nb_fput($conn, 'remote_file.txt', $handle, FTP_BINARY);

if ($res == FTP_FAILED) {
    echo "Failed to initiate upload.\n";
}

while ($res == FTP_MOREDATA) {
    $res = ftp_nb_continue($conn);
}

if ($res == FTP_FAILED) {
    echo "Failed to complete upload.\n";
}

fclose($handle);
ftp_close($conn);

Durch eine angemessene Fehlerbehandlung und die Überprüfung der Rückgabekonstanten sowohl von ftp_nb_fput() als auch von ftp_nb_continue() können Sie den Erfolg Ihrer FTP-Operationen sicherstellen.

Fazit

Zusammenfassend lässt sich sagen, dass die ftp_nb_fput()-Funktion ein nützliches Werkzeug zum Hochladen von Dateien auf einen FTP-Server im nicht-blockierenden Modus ist. Sie ermöglicht es Ihnen, mit anderen Operationen fortzufahren, während Sie auf den Abschluss des FTP-Uploads warten. Durch das Verständnis der Funktionsweise können Sie Dateien effizient zwischen Ihrem lokalen Rechner und einem FTP-Server übertragen, was die Leistung und Produktivität Ihrer PHP-Projekte verbessert. Denken Sie daran, Fehler immer angemessen zu behandeln, um den Erfolg Ihrer FTP-Operationen zu gewährleisten.

Practice

Was macht die ftp_nb_fput()-Funktion in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.