我有一个curl进度回调,它通过curlopt_progress function选项工作,该选项在php中成功地调用了我的成员函数。dlnow变量返回正确的接收值,但dltotal始终返回0。我错过了什么?
class MyClass {
function getFile(){
...
$fp = fopen ($file, 'w+');
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$signed['signed_url']);
curl_setopt($curl, CURLOPT_TIMEOUT, 1000);
curl_setopt($curl, CURLOPT_FILE, $fp); // write curl response to file
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_NOPROGRESS, 0);
curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, array($this, 'curl_progress_callback'));
}
function curl_progress_callback($dltotal, $dlnow, $ultotal, $ulnow){
echo $dltotal; //Reports correct value
echo $dlnow; //Always returns 0
}
}
编辑:这篇文章已经更新了@sabuj hassan的信息。最初我以为我收到了一个正确的dLoToT,但是一个错误的DLWO,但是在回调函数中有一个额外的不必要的参数。
最佳答案
注:对于大于7.32.0的libcurl
回调函数需要以下格式
curl_progress_callback($resource,$dltotal, $dlnow, $ultotal, $ulnow)
其中新的curl二进制文件不需要资源
curl_progress_callback($dltotal, $dlnow, $ultotal, $ulnow)
检查你的卷曲版本
curl -V