【发布时间】:2014-07-08 06:53:06
【问题描述】:
我编写了一个 PHP 脚本,它使用 cURL 获取一个远程文件并将其提供给客户端。
它像代理一样工作......
电话:
<?php
[...]
public function streamContent($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILETIME, true);
if($this->cookie) {
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie);
curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie);
}
if($this->follow) {
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
}
curl_setopt($curl, CURLOPT_HEADERFUNCTION, array($this, "streamHeader"));
curl_setopt($curl, CURLOPT_WRITEFUNCTION, array($this, "myProgressFunc"));
$data = curl_exec($curl);
curl_close($curl);
}
private function streamHeader($curl,$string)
{
$stringTrim = trim($string);
if(!empty ($stringTrim)) {
if(!preg_match('~chunk~i', $stringTrim)) header($stringTrim);
}
return strlen($string);
}
private function myProgressFunc($curl, $str)
{
echo $str;
return strlen($str);
}
[...]
$object->streamContent('http://url_to_distant_file');
?>
现在,我想知道客户端下载了多少字节(实时,即使下载已停止)
我想我可以在 myProgressFunc() 上写一些东西来获得这个,但我不知道如何:/
有人知道如何实现吗?
谢谢!
编辑: 嗯... myProgressFunc() 返回 strlen(),所以它是下载的字节大小,对吧?
【问题讨论】: