ftp_nb_get
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
ftp_nb_get — Retrieves a file from the FTP server and writes it to a local file (non-blocking)
Description
ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file [, int $mode = FTP_BINARY [, int $resumepos = 0 ]] ) : int
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
orFTP_BINARY
. -
resumepos
-
The position in the remote file to start downloading from.
Return Values
Returns FTP_FAILED
or FTP_FINISHED
or FTP_MOREDATA
.
Changelog
Version | Description |
---|---|
7.3.0 | The mode parameter is now optional. Formerly it has been mandatory. |
Examples
Example #1 ftp_nb_get() example
<?php // Initiate 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); } ?>
Example #2 Resuming a download with ftp_nb_get()
<?php // Initiate $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); } ?>
Example #3 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); } ?>
In the example above, newfile is 100 bytes smaller than README on the FTP server because we started reading at offset 100. If we didn't disable FTP_AUTOSEEK
, the first 100 bytes of newfile would be '\0'
.
See Also
- ftp_nb_fget() - Retrieves a file from the FTP server and writes it to an open file (non-blocking)
- ftp_nb_continue() - Continues retrieving/sending a file (non-blocking)
- ftp_fget() - Downloads a file from the FTP server and saves to an open file
- ftp_get() - Downloads a file from the FTP server
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.ftp-nb-get.php