(PHP 4 >= 4.3.0, PHP 5)
ftp_nb_get — Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)
ftp_nb_get() lit le fichier remote_file présent sur le serveur FTP ftp_stream et le sauvegarde dans un fichier local.
La différence entre cette fonction et ftp_fget() est que cette fonction peut lire le fichier de manière asynchrone, afin que votre programme fasse autre chose pendant que le fichier est téléchargé.
L'identifiant du lien de connexion FTP.
Le chemin vers le fichier local (sera écrasé si le fichier existe déjà).
Le chemin vers le fichier distant.
Le mode de transfert. Doit être soit FTP_ASCII ou FTP_BINARY.
Retourne FTP_FAILED ou FTP_FINISHED ou FTP_MOREDATA.
Exemple #1 Exemple avec ftp_nb_get()
<?php
// Initialise le téléchargement
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Faites ce que vous voulez...
echo ".";
// Continue le téléchargement...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "Il y a eu un problème lors du téléchargement...";
exit(1);
}
?>
Exemple #2 Reprise d'un téléchargement avec ftp_nb_get()
<?php
// Initialise
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// Ou : $ret = ftp_nb_get($my_connection, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// Faites ce que vous voulez...
echo ".";
// Continue le téléchargement...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "Il y a eu un problème lors du téléchargement du fichier...";
exit(1);
}
?>
Exemple #3 Reprise d'un téléchargement à la position 100 dans un nouveau fichier avec ftp_nb_get()
<?php
// Désactive l'Autoseek
ftp_set_option($my_connection, FTP_AUTOSEEK, false);
// Initialisation
$ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {
/* ... */
// Continue le téléchargement...
$ret = ftp_nb_continue($my_connection);
}
?>
Dans l'exemple ci-dessus, "newfile" est 100 octets plus petit que "README" sur le site FTP, car nous avons commencé à lire à l'offset 100. Si nous n'avions pas désactivé l'option FTP_AUTOSEEK, les premiers 100 octets du fichier seraient complétés avec '\0'.