不知道為什么用正常的ftp_get函數(shù)下載文件速度特別慢,但是用ftp的客戶(hù)端下載很快,所以換了curl的下載方式,速度正常
function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){
$curlobj = curl_init();//初始化
//傳入ftp的目標(biāo)文件,如'ftp://192.168.3.1/test/1.jpg'
curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
curl_setopt($curlobj,CURLOPT_HEADER,0);//不輸出header
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
//time out after 300s
curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超時(shí)時(shí)間
//通過(guò)這個(gè)函數(shù)設(shè)置ftp的用戶(hù)名和密碼,沒(méi)設(shè)置就不需要!
curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);
$outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名
curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$rtn = curl_exec($curlobj);
if(curl_errno($curlobj)){
writeLog('Curl error: ' . curl_error($curlobj));
}
fclose($outfile);
curl_close($curlobj);
if($rtn == 1){
return true;
}else{
unlink($fileSavePath);//如果下載失敗,但是本地open了這個(gè)文件,所以要?jiǎng)h除
return false;
}
}
測(cè)試下載小文件是正常的,但是如果網(wǎng)速很慢,下載大文件時(shí)候,會(huì)報(bào)一個(gè)ftp timeout的錯(cuò)誤,目前還在不知道是哪里配置問(wèn)題,還是什么問(wèn)題。