PHP:curl和流转发

时间:2013-05-09 12:44:28

标签: php curl

Curl有很多选项,可以让我的用例更容易从另一台服务器请求数据。我的脚本类似于代理,到目前为止它正在从另一台服务器请求数据,一旦结果数据完成,它就会立即发送给客户端。

  1. 用户访问http://te.st/proxy.php?get=xyz

  2. proxy.php从外部服务器下载xyz

  3. 当下载完成100%时,它将输出数据

  4. 现在我想知道2和3是否也可以并行完成(使用php5-curl),就像“代理流”一样可以在不等待最后一行的情况下即时转发数据。

    如果文件大小平均为20MB,则会产生显着差异。

    卷曲中是否有选项?

2 个答案:

答案 0 :(得分:6)

查看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"); 

另请阅读ParallelCurl with CURLOPT_WRITEFUNCTION

答案 1 :(得分:1)

这是实际流式传输文件而不是等待完整文件缓冲的代码。

$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);