Aller au contenu

ftp_nb_get()

Comprendre la fonction PHP ftp_nb_get()

La fonction ftp_nb_get() est une fonction PHP intégrée qui télécharge un fichier depuis un serveur FTP en mode non bloquant. Cet article fournit un guide complet pour l'utiliser dans vos projets PHP.

Qu'est-ce que ftp_nb_get() ?

La fonction ftp_nb_get() initialise un téléchargement de fichier asynchrone. Elle nécessite quatre paramètres :

  1. ftp_stream : L'identifiant de connexion renvoyé par ftp_connect().
  2. local_file : Le chemin du fichier local où le fichier téléchargé sera enregistré.
  3. remote_file : Le chemin du fichier distant sur le serveur FTP.
  4. mode : Le mode de transfert, soit FTP_ASCII soit FTP_BINARY.

Elle accepte également un cinquième paramètre optionnel, resumepos, qui spécifie la position dans le fichier distant à partir de laquelle commencer le téléchargement (par défaut 0).

La fonction renvoie l'une des trois constantes suivantes : FTP_FINISHED en cas de succès, FTP_MOREDATA si le transfert est toujours en cours, ou FTP_FAILED en cas d'erreur.

Syntaxe de ftp_nb_get()

La syntaxe de la fonction ftp_nb_get() est la suivante :

Syntaxe de ftp_nb_get()

php
int ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos = 0 ] )

La fonction ftp_nb_get() prend quatre paramètres obligatoires (ftp_stream, local_file, remote_file et mode) et un paramètre optionnel (resumepos). Le paramètre ftp_stream est l'identifiant de connexion renvoyé par ftp_connect(). Le paramètre local_file est le chemin du fichier local où le fichier téléchargé sera enregistré. Le paramètre remote_file est le chemin du fichier distant sur le serveur FTP. Le paramètre mode spécifie le mode de transfert, soit FTP_ASCII soit FTP_BINARY. Le paramètre resumepos spécifie la position dans le fichier distant à partir de laquelle commencer le téléchargement. Par défaut, resumepos est défini sur 0, ce qui signifie que le téléchargement commencera au début du fichier.

Utilisation de ftp_nb_get()

Pour utiliser la fonction ftp_nb_get(), vous devez d'abord établir une connexion au serveur FTP à l'aide de ftp_connect(). Voici un exemple :

Utilisation de ftp_nb_get()

php
<?php

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

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

// Initiate an asynchronous FTP operation
$result = ftp_nb_get($conn, 'local_file.txt', 'remote_file.txt', FTP_BINARY);

if ($result === FTP_FAILED) {
    echo "Failed to download file from remote server.\n";
} else {
    // Continue the asynchronous FTP operation
    while ($result === FTP_MOREDATA) {
        // Do something else while waiting for the FTP operation to complete
        $result = ftp_nb_continue($conn);
    }
}

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

Dans cet exemple, nous établissons une connexion au serveur FTP à l'aide de ftp_connect(). Ensuite, nous nous connectons avec nos identifiants FTP à l'aide de ftp_login(). Nous initialisons une opération FTP asynchrone à l'aide de ftp_nb_get(). Nous continuons l'opération à l'aide de ftp_nb_continue() dans une boucle qui vérifie FTP_MOREDATA, et enfin nous fermons la connexion FTP.

Gestion des erreurs dans ftp_nb_get()

Il est important de gérer correctement les erreurs lors de l'utilisation de la fonction ftp_nb_get(). La fonction renvoie FTP_FAILED si le téléchargement a échoué. Voici un exemple de gestion des erreurs :

Gestion des erreurs dans ftp_nb_get()

php
<?php

$result = ftp_nb_get($conn, 'local_file.txt', 'remote_file.txt', FTP_BINARY);

if ($result === FTP_FAILED) {
    echo "Failed to download file from remote server.\n";
}

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

ftp_close($conn);

En gérant les erreurs de manière appropriée et en vérifiant la valeur de retour par rapport à FTP_FAILED, vous pouvez garantir le succès de vos opérations FTP à l'aide de la fonction ftp_nb_get().

Conclusion

En conclusion, la fonction ftp_nb_get() est un outil utile pour télécharger des fichiers depuis un serveur FTP en mode non bloquant.

Pratique

Quelle est la fonction de la commande PHP FTP_NB_CONTINUE ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.