ftp_nb_get

(PHP 4 >= 4.3.0)

ftp_nb_get -- Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)

Description

bool ftp_nb_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos])

ftp_nb_get() lit le fichier remote_file présent sur le serveur FTP ftp_stream, puis écrit ce fichier dans le pointeur de fichier handle. Le mode de transfert mode spécifié peut être FTP_ASCII ou FTP_BINARY. 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é.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemple 1. Exemple avec ftp_nb_get()

// Initialisation
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
   
   // Faites ce que vous voulez
   echo ".";

   // Continue le chargement
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement du fichier...";
   exit(1);
}

Exemple 2. Reprise d'un chargement avec ftp_nb_get()

// Initialisation
$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 chargement
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "Il y a eu une erreur lors du chargement du fichier...";
   exit(1);
}

Exemple 3. Reprise du téléchargement à la position 100 avec ftp_nb_get()

// Désactive l'option de 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 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'.

Voir aussi ftp_nb_fget(), ftp_nb_continue(), ftp_get() et ftp_fget().