PHP ftp_nb_get() Function
The PHP ftp_nb_get() function downloads a file from the FTP server, and saves it into a local file (non-blocking).
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.
Syntax
ftp_nb_get(ftp, local_file, server_file, mode, offset)
Parameters
ftp |
Required. Specify the FTP connection to use. |
local_file |
Required. Specify the local file path (will be overwritten if the file already exists). |
server_file |
Required. Specify the server file to download. |
mode |
Optional. Specify the transfer mode. Must be either FTP_ASCII or FTP_BINARY. |
offset |
Optional. Specify the position in the remote file to start downloading from. |
Return Value
Returns any of the following values:
- FTP_FAILED: Asynchronous transfer has failed.
- FTP_FINISHED: Asynchronous transfer has finished.
- FTP_MOREDATA: Asynchronous transfer is still active.
Example:
The example below shows the usage of ftp_nb_get() function.
<?php //FTP server to use $ftp_server = "ftp.example.com"; //username for the FTP Connection $ftp_user = "user"; //password for the user $ftp_pass = "password"; //set up a connection or die $ftp = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); if($ftp) { echo "Successfully connected to $ftp_server!\n"; if(@ftp_login($ftp, $ftp_user, $ftp_pass)) { echo "Connected as $ftp_user@$ftp_server\n"; //local file path where //the file to be downloaded $local_file = "local_demo.txt"; //server file path which //need to be downloaded $server_file = "server_demo.txt"; //downloading the specified server file $ret = ftp_nb_get($ftp, $local_file, $server_file, FTP_ASCII); while ($ret == FTP_MOREDATA) { //continue downloading... $ret = ftp_nb_continue($ftp); } if ($ret == FTP_FINISHED) { echo "Successfully downloaded $server_file\n"; } else { echo "Error while downloading $server_file\n"; exit(1); } } else { echo "Couldn't connect as $ftp_user\n"; } //close the connection if(ftp_close($ftp)) { echo "Connection closed successfully!\n"; } } ?>
The output of the above code will be:
Successfully connected to ftp.example.com! Connected as user@ftp.example.com Successfully downloaded server_demo.txt Connection closed successfully!
❮ PHP FTP Reference