2012-10-08 78 views
1

我知道有很多類似這樣的帖子,但是在爬行之後,仍然沒有找到答案。使用PHP下載大型遠程圖像

我正在尋找一個腳本,充當下載大型遠程圖像(每個大約10mb)的代理。到目前爲止,我正在使用curl讀取遠程圖像url,然後使用頭來強制下載。喜歡的東西(而不是完整的腳本):

function getRemoteFile($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

header('Content-Type: octet/stream'); 
header('Content-Disposition: attachment; filename="random.jpg"'); 
header('Content-Length: ' . strlen($file)); 
echo $file; 

這工作,但有作爲這個腳本更好的辦法可以看到相當多的流量 - 也許300個併發用戶每10個請求?

圖像將從同一網絡上的服務器提供。

回答

1

10mb300 concurrent users with 10 requests相當大。

你是說10 * 300 * 10 = 30,000 MB = 30GB

我建議你使用一個作業隊列

您可以使用Gearman

$worker= new GearmanWorker(); 
$worker->addServer(); 
$worker->addFunction("download", "getRemoteFile"); 
while ($worker->work()); 

不能使用AJAX和檢查,如果圖像被下載和顯示它我也建議你看下面的

+1

是 - 使用是一個問題。我剛開始安裝Gearman來給它一個旋轉。感謝您的快速響應! – wiseguydigital

+0

歡迎... :) – Baba