ftp_nb_get
ftp_nb_get
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
ftp_nb_get - 从FTP服务器检索文件并将其写入本地文件(非阻塞)
描述
int ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos = 0 ] )
ftp_nb_get()
从FTP服务器检索远程文件,并将其保存到本地文件中。
这个函数和ftp_get()的区别在于这个函数异步地检索文件,所以你的程序可以在文件下载时执行其他操作。
参数
ftp_stream
The link identifier of the FTP connection.
local_file
本地文件路径(如果文件已经存在,将被覆盖)。
remote_file
远程文件路径。
mode
传输模式。必须是FTP_ASCII
或者FTP_BINARY
。
resumepos
在开始从远程文件中下载的位置。
返回值
返回FTP_FAILED
或FTP_FINISHED
或FTP_MOREDATA
。
例子
示例#1 ftp_nb_get()示例
<?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使用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
}
?>
示例#3使用ftp_nb_get()将位置100处的下载恢复到新文件
<?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
}
?>
在上面的例子中,newfile比FTP服务器上的README小100个字节,因为我们开始读取偏移量100.如果我们没有禁用FTP_AUTOSEEK
,newfile的前100个字节将是'\ 0'
。