ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5)

ftp_nb_get -- 從 FTP 伺服器上取得檔案並寫入本地檔案(non-blocking)

說明

bool ftp_nb_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] )

ftp_nb_get() 函數用來取得參數 remote_file 特殊的的遠端檔案,並儲存到由參數 local_file 特殊的本地檔案。傳輸模式參數 mode 只能為 FTP_ASCII (文字模式) 或 FTP_BINARY (二進位模式) 兩種。與 ftp_get() 函數不同的是,此函數上傳檔案的時候採用的是異步傳輸模式,也就意味著在檔案傳輸的過程中,你的程式可以繼續干其它的事情。

返回 FTP_FAILEDFTP_FINISHEDFTP_MOREDATA

例子 1. ftp_nb_get() 案例

<?php
// 開始下載
$ret ftp_nb_get($my_connection"test""README"FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

   
// 這裡可以插入其它代碼
   
echo ".";

   
// 繼續下載...
   
$ret ftp_nb_continue ($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo 
"下載中出錯...";
   exit(
1);
}
?>

例子 2. 使用 ftp_nb_get() 函數斷線續傳

<?php
// 開始
$ret ftp_nb_get ($my_connection"test""README"FTP_BINARY,
                      
filesize("test"));
// 或: $ret = ftp_nb_get ($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   
// 可以插入其它代碼
   
echo ".";

   
// 繼續傳輸...
   
$ret ftp_nb_continue ($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo 
"下載出錯...";
   exit(
1);
}
?>

例子 3. 用 ftp_nb_get() 在 100 的位置斷線續傳並存為 "newfile"

// 禁止自動搜尋
ftp_set_option ($my_connection, FTP_AUTOSEEK, FALSE);

// 開始
$ret = ftp_nb_get ($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {

   ...

   // 繼續下載...
   $ret = ftp_nb_continue ($my_connection);
}

在上邊的例子中,"newfile" 檔案比伺服器上的檔案 "README" 要小 100 位元組。這是因為我們是從檔案的偏移量 100 處開始讀取的,若果沒有禁止 FTP_AUTOSEEK,則 "newfile" 的前 100 位元組將會是 '\0'

參見 ftp_nb_fget()ftp_nb_continue()ftp_get()ftp_fget()