如何与PHP并行执行cURL下载和输出?

时间:2012-11-20 20:15:48

标签: php file download save readfile

我尝试使用PHP进行下载重定向。 我通过另一个服务器获取文件

例如:http://rarlab.com/rar/wrar420.exe

我希望脚本将文件保存为临时变量,同时保存, 他将其发送到浏览器下载...

function download($url,$name,$hash){ 
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data = curl_exec($ch); 
        curl_close($ch);
        header('Content-Description: File Transfer');
        header("Content-Disposition: attachment; filename=".$name);  
        ob_clean();
        flush();
        readfile($url);
}
download("http://rarlab.com/rar/wrar420.exe","winrar.rar","26digitHASH");

你们这些人。

1 个答案:

答案 0 :(得分:1)

您要做的事情几乎超出了PHP的范围,但是由于cURL实现的多手柄功能,它应该是可能的。

请参阅curl_multi_exec()的文档,了解如何使用多手柄功能。

根据this answer,可以在转移完成之前致电curl_multi_getcontent()

//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }

    // echo the contents downloaded so far
    // Note that this must be called with the curl handle, not with the multi handle.
    echo curl_multi_getcontent($ch);
    flush();

}