(PHP 4 >= 4.3.0, PHP 5, PHP 7)
Retrieves a file from the FTP server and writes it to a local file (non-blocking)
int ftp_nb_get ( resource $ftp_stream, string $local_file, string $remote_file, int $mode [, int $resumepos = 0 ] )
ftp_nb_get() retrieves a remote file from the FTP server, and saves it into a local file.
The difference between this function and ftp_get() is that this function retrieves the file asynchronously, so your program can perform other operations while the file is being downloaded.
Parameters:
ftp_stream
The link identifier of the FTP connection.
local_file
The local file path (will be overwritten if the file already exists).
remote_file
The remote file path.
mode
The transfer mode. Must be either FTP_ASCII
or FTP_BINARY
.
resumepos
The position in the remote file to start downloading from.
Returns:
Returns FTP_FAILED
or FTP_FINISHED
or FTP_MOREDATA
.
Examples:
ftp_nb_get() example
<?php // Initate the download $ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue downloading... $ret = ftp_nb_continue($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error downloading the file..."; exit(1); } ?>
Resuming a download with ftp_nb_get()
<?php // Initate $ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY, filesize("test")); // OR: $ret = ftp_nb_get($my_connection, "test", "README", // FTP_BINARY, FTP_AUTORESUME); while ($ret == FTP_MOREDATA) { // Do whatever you want echo "."; // Continue downloading... $ret = ftp_nb_continue($my_connection); } if ($ret != FTP_FINISHED) { echo "There was an error downloading the file..."; exit(1); } ?>
Resuming a download at position 100 to a new file with ftp_nb_get()
<?php // Disable Autoseek ftp_set_option($my_connection, FTP_AUTOSEEK, false); // Initiate $ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100); while ($ret == FTP_MOREDATA) { /* ... */ // Continue downloading... $ret = ftp_nb_continue($my_connection); } ?>
See also:
Please login to continue.