請注意,您可能需要持續呼叫 ftp_nb_continue 才能完成下載。例如,如果您這樣做:
<?php
ftp_nb_get($conn,$localfile,$remotefile,FTP_BINARY)
//執行一些耗時的工作
while(ftp_nb_continue($conn)!=FTP_FINISHED){}
?>
您的本地檔案可能只包含幾 KB,而後續的 ftp_nb_continue 會持續發出沒有更多資料的警告(我猜是因為連線逾時)。
所以您可能想改成這樣做:
<?php
$dl=ftp_nb_get($conn,$localfile,$remotefile,FTP_BINARY)
//部分耗時的工作
if(ftp_nb_continue($conn)==FTP_MOREDATA) {}
//部分耗時的工作
if(ftp_nb_continue($conn)==FTP_MOREDATA) {}
//繼續這樣做,直到完成耗時的工作
while(ftp_nb_continue($conn)==FTP_MOREDATA){}
?>
這發生在我的 Windows XP + PHP 5.3.8 的 CLI 環境下。希望這對某些人有所幫助。