(PHP 4 >= 4.3.0, PHP 5)
ftp_nb_get — Retrieves a file from the FTP server and writes it to a local file (non-blocking)
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.
The link identifier of the FTP connection.
The local file path (will be overwritten if the file already exists).
The remote file path.
The transfer mode. Must be either FTP_ASCII or FTP_BINARY.
Returns FTP_FAILED or FTP_FINISHED or FTP_MOREDATA.
Example#1 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);
}
?>
Example#2 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);
}
?>
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'.