$url = 'http://wx.qlogo.cn/mmopen/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic4JSDngEVjVo10BoiaPd0iciaOb/0';$content = file_get_contents($url);file_put_contents('uploads/a.jpg', $content);
回複內容:
$url = 'http://wx.qlogo.cn/mmopen/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic4JSDngEVjVo10BoiaPd0iciaOb/0';$content = file_get_contents($url);file_put_contents('uploads/a.jpg', $content);
$url
這一行上面增加 ini_set('default_socket_timeout', 1);
設定一下 預設逾時時間.
你所請求的這個圖片, 對方的伺服器支援 Connection: keep-alive
, 所以 PHP 在接收到資料之後, 維持了一段時間, 一直等到逾時, 才返回, 所以 在設定 預設逾時時間的情況下 會比較慢.
你可以用同樣的代碼(不使用ini_set),擷取這個URL http://sfault-avatar.b0.upaiyun.com/160/666/1606661144-55fe2a534b79f_huge256
, 很快就回來了, 因為對方告訴了PHP, 在輸出完資料接收完之後, 串連就可以關閉了.
function curl_file_get_contents($durl){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $durl); curl_setopt($ch, CURLOPT_TIMEOUT, 2); curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); curl_setopt($ch, CURLOPT_REFERER,_REFERER_); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $r = curl_exec($ch); curl_close($ch); return $r; }$url = 'http://wx.qlogo.cn/mmopen/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic4JSDngEVjVo10BoiaPd0iciaOb/0';$a = curl_file_get_contents($url);file_put_contents('uploads/2.jpg', $a);
這樣子會很快。。。。
這個應該是網路原因吧,就下載一個圖片,用什麼方法根本感覺不到差別