function dlFile($file,$newfile)
{
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 301); 
curl_setopt($curl, CURLOPT_TIMEOUT, 301); 
curl_setopt($curl, CURLOPT_FILE, $write); 
$data = curl_exec($curl);
curl_close($curl);
//curl_getinfo($curl,$data);
$write = @fopen($newfile,"w");
return TRUE;
}$url='http://xxx.com/bigFile.zip';
$file_dir='F:\tmp\up/'.time().'.'.'zip';//图片保存路径
dlFile($url,$file_dir);如何获得文件下载进度?

解决方案 »

  1.   

    CURLOPT_NOPROGRESS。
    curl_getinfo是可以获得当前内容的,不过要让你的curl前提支持回调,查一查吧。
    不过现在很多做法是使用apc,比如gmail的上传文件就是apc实现的,keep alive长连接,还稳定。个人建议你用apc来实现要好一些。
      

  2.   

    等下再研究apc
    CURLOPT_NOPROGRESS=0 如何得到进度
      

  3.   

    CURLOPT_NOPROGRESS
    启用时关闭curl传输的进度条,此项的默认设置为启用。Note:
    PHP自动地设置这个选项为TRUE,这个选项仅仅应当在以调试为目的时被改变。看来并不是应该使用的方法啊。还有啥别的招没
    刚查了apc是阿斯匹林