Curl有很多選項可以讓我的用例更容易地從另一臺服務器請求數據。我的腳本與代理類似,迄今爲止它正在向另一個服務器請求數據,一旦結果數據完成,它就立即發送給客戶端。PHP:捲曲和流轉發
proxy.php從外部服務器下載XYZ
當下載完成100%時,將輸出數據
現在我想知道2和3是否也可以並行執行(使用php5-curl),就像一個「代理流」,它可以在不用等待的情況下即時轉發數據最後一行。
如果文件大小平均爲20MB,則會產生顯着差異。
捲毛中有這個選項嗎?
Curl有很多選項可以讓我的用例更容易地從另一臺服務器請求數據。我的腳本與代理類似,迄今爲止它正在向另一個服務器請求數據,一旦結果數據完成,它就立即發送給客戶端。PHP:捲曲和流轉發
proxy.php從外部服務器下載XYZ
當下載完成100%時,將輸出數據
現在我想知道2和3是否也可以並行執行(使用php5-curl),就像一個「代理流」,它可以在不用等待的情況下即時轉發數據最後一行。
如果文件大小平均爲20MB,則會產生顯着差異。
捲毛中有這個選項嗎?
看看http://www.php.net/manual/en/function.curl-setopt.php#26239
類似的東西(未測試):
function myProgressFunc($ch, $str){
echo $str;
return strlen($str);
}
curl_setopt($ch, CURLOPT_WRITEFUNCTION, "myProgressFunc");
這裏是實際流,而不是等待完整的文件的代碼文件緩衝。
$url = YOUR_URL_HERE;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
echo $data;
ob_flush();
flush();
return strlen($data);
});
curl_exec($ch);
curl_close($ch);
好,但不完美:它的緩衝。這意味着它可以用於文件流傳輸,但是當它是一個事件流時,最新的事件在curl內部無法訪問('flush()'無助於將它們全部回顯)。太可惜了。無論如何,你+1。 – user 2016-09-22 01:36:21