PHP 8.4.1 Released!

ftp_nb_fget

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

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

Description

ftp_nb_fget(
    FTP\Connection $ftp,
    resource $stream,
    string $remote_filename,
    int $mode = FTP_BINARY,
    int $offset = 0
): int

ftp_nb_fget() lit le fichier remote_filename présent sur le serveur FTP ftp.

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é.

Liste de paramètres

ftp

Une instance de FTP\Connection.

stream

Un pointeur de fichier ouvert dans lequel les données sont écrites.

remote_filename

Le chemin vers le fichier distant.

mode

Le mode de transfert. Doit être soir FTP_ASCII ou FTP_BINARY.

offset

La position dans le fichier distant à partir de laquelle le téléchargement doit commencer.

Valeurs de retour

Retourne FTP_FAILED ou FTP_FINISHED ou FTP_MOREDATA.

Historique

Version Description
8.1.0 La paramètre ftp attend désormais une instance de FTP\Connection ; auparavant, une ressource était attendu.
7.3.0 Le paramètre mode est maintenant optionnel. Précédemment il était obligatoire.

Exemples

Exemple #1 Exemple avec ftp_nb_fget()

<?php

// Ouverture de quelques fichiers pour écriture
$file = 'index.php';
$fp = fopen($file, 'w');

$ftp = ftp_connect($ftp_server);

$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);

// Initialise le téléchargement
$ret = ftp_nb_fget($ftp, $fp, $file, FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

// Faites ce que vous voulez...
echo ".";

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

// Ferme le pointeur de fichier
fclose($fp);
?>

Voir aussi

  • ftp_nb_get() - Lit un fichier sur un serveur FTP, et l'écrit dans un fichier (non bloquant)
  • ftp_nb_continue() - Reprend le téléchargement d'un fichier (non bloquant)
  • ftp_fget() - Télécharge un fichier via FTP dans un fichier local
  • ftp_get() - Télécharge un fichier depuis un serveur FTP

add a note

User Contributed Notes 1 note

up
6
pilif at pilif dot ch
20 years ago
If you want to monitor the progress of the download, you may use the filesize()-Function.

But note: The results of said function are cached, so you'll always get 0 bytes. Call clearstatcache() before calling filesize() to determine the actual size of the downloaded file.

This may have performance implications, but if you want to provide the information, there's no way around it.

Above sample extended:

<?php
// get the size of the remote file
$fs = ftp_size($my_connection, "test");

// Initate the download
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

clearstatcache(); // <- this is important
$dld = filesize($locfile);
if (
$dld > 0 ){
// calculate percentage
$i = ($dld/$fs)*100;
printf("\r\t%d%% downloaded", $i);
}

// Continue downloading...
$ret = ftp_nb_continue ($my_connection);
}
if (
$ret != FTP_FINISHED) {
echo
"There was an error downloading the file...";
exit(
1);
}
?>

Philip
To Top