我必须调用外部脚本,其中我使用CURL进行第一次调用以获取大约需要2-3分钟的数据,现在在此期间我需要使用CURL进行其他外部调用以获得第一次调用的进度。但问题是我的下一个电话等到第一个CURL的回复到来。我还检查了curl_multi,但这也没有帮助我,因为我想在第一个呼叫进行时拨多个电话。所以任何人都可以帮我解决。
答案 0 :(得分:1)
我认为,没有必要进行第二次调用来跟踪CURL进度。您可以通过使用CURL选项CURLOPT_PROGRESSFUNCTION
和回调函数来实现相同的目的。
回调方法有5个参数:
在回调方法中,您可以计算下载/上传的百分比。下面给出一个例子:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://stackoverflow.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
$html = curl_exec($ch);
curl_close($ch);
function progress($resource,$download_size, $downloaded, $upload_size, $uploaded)
{
if($download_size > 0)
echo $downloaded / $download_size * 100 . "%\n";
sleep(1);
}
答案 1 :(得分:0)
有一种方法可以执行此操作 - 请参阅以下链接,他们使用curl_multi_init解释如何执行此操作:php.net curl_multi_init和http://arguments.callee.info/2010/02/21/multiple-curl-requests-with-php/