(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ftp_nb_get — Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)
$ftp
, string $local_filename
, string $remote_filename
, int $mode
= FTP_BINARY
, int $offset
= 0
) : int
ftp_nb_get() lit le fichier remote_filename
présent sur le serveur FTP ftp
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é.
ftp
L'identifiant du lien de connexion FTP.
local_filename
Le chemin vers le fichier local (sera écrasé si le fichier existe déjà).
remote_filename
Le chemin vers le fichier distant.
mode
Le mode de transfert. Doit être soit FTP_ASCII
ou
FTP_BINARY
.
offset
La position dans le fichier distant à partir de laquelle le téléchargement doit commencer.
Retourne FTP_FAILED
ou FTP_FINISHED
ou FTP_MOREDATA
.
Version | Description |
---|---|
7.3.0 |
Le paramètre mode est maintenant optionnel. Précédemment il
était obligatoire.
|
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 newfile seraient complétés
avec '\0'
.