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