【发布时间】:2014-04-30 07:39:33
【问题描述】:
我正在尝试通过 php curl 下载一些文件并向用户显示 complete persents。
我在 Google 上搜索了很多示例,但没有人会为我工作。
例如,我们将使用此代码。
echo "<pre>";
echo "Loading ...";
ob_flush();
flush();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://stackoverflow.com");
//curl_setopt($ch, CURLOPT_BUFFERSIZE,128);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_NOPROGRESS, false); // needed to make progress function work
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$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;
ob_flush();
flush();
sleep(1); // just to see effect
}
echo "Done";
ob_flush();
flush();
全部都在 index.php 文件中。但是当我试图执行这个文件时,它只会加载一段时间(http://take.ms/LlnUv)然后显示百分比。但它应该在下载文件时显示这些百分比,而不是在下载后显示,因为之后我不再需要它了。
Loading ...7.5311205259867.53112052598615.19270877173315.19270877173322.8542970174822.8542970174830.51588526322730.51588526322738.17747350897438.17747350897445.83906175472145.83906175472153.50065000046853.50065000046861.16223824621561.16223824621568.82382649196168.82382649196176.48541473770876.48541473770884.14700298345584.14700298345591.80859122920291.80859122920299.47017947494999.470179474949100100100100Done
也在尝试使用该 (https://github.com/JokerHacker/CurlAxel) 库。但它也不适合我。
我做错了什么?谢谢
【问题讨论】:
-
您在什么操作系统上运行 XAMPP?你用什么浏览器测试它?因为我已经在我的 WAMP 服务器上运行了这段代码,并用 IE 和 Chrome(在 Windows 上)对其进行了测试,它几乎可以像宣传的那样工作。 (除了由于某种原因我的进度函数只需要 4 个参数并且缺少资源一个)
-
它在 Firefox 中不起作用。 (所以我猜那是你的浏览器。)