我編寫了一個PHP腳本,可以獲取遠程文件並使用cURL將其提供給客戶端。使用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(),所以它的大小以字節爲單位下載,對嗎?
的[在PHP捲曲下載進度]可能重複(http://stackoverflow.com/questions/13958303/curl-download-progress-in-php) – Ben