$urls = array(
'http://localhost:8080/xls/sme.xls',
'http://localhost:8080/member/256438.jpg',
);
$save_to='./temp/';
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$g = $save_to.basename($url);
if(!is_file($g)){
$conn[$i] = curl_init($url);
$fp[$i] = fopen ($g, "w");
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_FILE, $fp[$i]);
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle ($mh,$conn[$i]);
}
}
do {
$n = curl_multi_exec($mh,$active);
}
while ($active);
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
它的確會把檔案下到我的目錄中
但我有兩個問題
1.當我執行第一次時,畫面會一片空白,然後兩個檔案就出現在我的目錄中了(sme.xls,sme.xls)
但我再執行一次時,會出現
Warning: curl_multi_remove_handle() expects parameter 2 to be resource, null given in C:\wamp\www\download.php on line 51
Warning: curl_close(): supplied argument is not a valid cURL handle resource in C:\wamp\www\download.php on line 52
Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\download.php on line 53
Warning: curl_multi_remove_handle() expects parameter 2 to be resource, null given in C:\wamp\www\download.php on line 51
Warning: curl_close(): supplied argument is not a valid cURL handle resource in C:\wamp\www\download.php on line 52
Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\download.php on line 53
就程式碼而言
是
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
這三行
2.因為我檔案是每天都要下載的,我想上面的第一點是因為目錄已經有相同的檔案,所以才會出現那些警告訊息,如果我希望下載下來的檔案
自動加上
年-月-日 時:分:秒
請問要怎麼弄呢
我有自己試著加到
$g = $save_to.basename($url);中
但是失敗了
以上兩點,請有經驗幫忙
感謝
雖然我不知道你為什麼要這樣抓檔案,而且把抓檔案動作分成三個迴圈 (一個迴圈就做完不好嗎?),不過既然你知道會有 warning 就是檔案已存在,那麼解決第二個問題就等於解了第一個問題了:
$g = $save_to . date('Y-m-d_H-i-s_') . basename($url);