ftp_nb_put()
Comprendre la fonction PHP ftp_nb_put()
La fonction ftp_nb_put() est une fonction PHP intégrée qui téléverse un fichier sur un serveur FTP en mode non bloquant. Ce guide couvre ses paramètres, sa syntaxe, son utilisation et la gestion des erreurs pour vous aider à l'intégrer efficacement dans vos projets PHP.
Qu'est-ce que ftp_nb_put() ?
La fonction ftp_nb_put() téléverse un fichier sur un serveur FTP sans interrompre l'exécution du script. Elle accepte trois paramètres obligatoires :
ftp_stream: L'identifiant de connexion retourné parftp_connect()(un objetFTP\Connectionen PHP 7.1+).remote_file: Le chemin du fichier distant où le fichier sera téléversé.local_file: Le chemin du fichier local.
La fonction retourne l'une des constantes suivantes : FTP_MOREDATA (transfert en cours), FTP_FINISHED (transfert terminé) ou FTP_FAILED (une erreur s'est produite).
Syntaxe de ftp_nb_put()
La syntaxe de la fonction ftp_nb_put() est la suivante :
Syntaxe de ftp_nb_put()
int ftp_nb_put ( FTP\Connection $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos = 0 ] )La fonction ftp_nb_put() prend trois paramètres obligatoires (ftp_stream, remote_file et local_file) et un paramètre optionnel (startpos). Le paramètre mode est obligatoire et spécifie le mode de transfert : FTP_BINARY est recommandé pour la plupart des fichiers (images, archives, exécutables) afin d'éviter la corruption des fins de ligne, tandis que FTP_ASCII est utilisé pour les fichiers texte brut (bien que FTP_BINARY soit généralement plus sûr pour tous les types de fichiers). Le paramètre startpos spécifie la position dans le fichier distant à partir de laquelle commencer le téléversement. Par défaut, startpos est défini sur 0, ce qui signifie que le téléversement commencera au début du fichier.
Utilisation de ftp_nb_put()
Pour utiliser la fonction ftp_nb_put(), vous devez d'abord établir une connexion au serveur FTP à l'aide de la fonction ftp_connect(). Voici un exemple :
Utilisation de ftp_nb_put()
<?php
// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');
if (!$conn) {
die('Could not connect to FTP server.');
}
// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
die('Login failed.');
}
// Initiate an asynchronous FTP operation
$result = ftp_nb_put($conn, 'remote_file.txt', 'local_file.txt', FTP_BINARY);
if ($result === FTP_FAILED) {
die('Upload failed.');
}
// 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);
}
if ($result === FTP_FINISHED) {
echo "Upload completed successfully.\n";
}
// Close the FTP connection
ftp_close($conn);Dans cet exemple, nous établissons une connexion au serveur FTP à l'aide de la fonction ftp_connect(). Ensuite, nous nous connectons avec nos identifiants FTP à l'aide de la fonction ftp_login(). Nous initions une opération FTP asynchrone à l'aide de la fonction ftp_nb_put(). Nous continuons l'opération à l'aide de la fonction ftp_nb_continue() dans une boucle qui vérifie FTP_MOREDATA, et nous vérifions enfin la complétion avec FTP_FINISHED avant de fermer la connexion FTP.
Gestion des erreurs dans ftp_nb_put()
Il est important de gérer correctement les erreurs lors de l'utilisation de la fonction ftp_nb_put(). Si la fonction retourne FTP_FAILED, cela signifie que le téléversement a échoué. Voici un exemple de gestion des erreurs :
Gestion des erreurs dans ftp_nb_put()
<?php
$result = ftp_nb_put($conn, 'remote_file.txt', 'local_file.txt', FTP_BINARY);
if ($result === FTP_FAILED) {
echo "Failed to upload file to remote server.\n";
}
while ($result === FTP_MOREDATA) {
// Do something else while waiting for the FTP operation to complete
$result = ftp_nb_continue($conn);
}
if ($result === FTP_FINISHED) {
echo "Upload completed.\n";
}
ftp_close($conn);En gérant les erreurs de manière appropriée et en vérifiant la valeur de retour de la fonction, vous pouvez garantir le succès de vos opérations FTP à l'aide de la fonction ftp_nb_put().
Conclusion
En conclusion, la fonction ftp_nb_put() est un outil utile pour téléverser des fichiers sur un serveur FTP en mode non bloquant. Elle vous permet de poursuivre d'autres opérations en attendant la fin du téléversement. Avec une utilisation correcte et une gestion des erreurs appropriée, cette fonction peut s'avérer un atout précieux dans vos projets PHP.
Remarque : Les fonctions ftp_nb_* sont considérées comme obsolètes dans les versions modernes de PHP. Pour les nouveaux projets, envisagez d'utiliser cURL ou des bibliothèques HTTP asynchrones comme Guzzle pour de meilleures performances, une sécurité accrue et un support protocolaire plus large.
Pratique
Quel est l'objectif de la fonction ftp_nb_put en PHP ?