$urls = array(
array(
'task_id'=>1,
'source_url'=>'http://www.xxoo.com/xxx1.mp3',
),
array(
'task_id'=>2,
'source_url'=>'http://www.xxoo.com/xxx2.mp3',
),
);
$mh = curl_multi_init();
$active = null;
$conn = array();
$fp = array();
$tmpFile = array();
foreach ($urls as $i => $url) {
$tmpFile[$i] = '/tmp/tmp_'.$url['task_id'];
$conn[$i] = curl_init($url['source_url']);
$fp[$i] = fopen ($tmpFile[$i], 'wb');
curl_setopt($conn[$i], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24');
curl_setopt($conn[$i], CURLOPT_FILE, $fp[$i]);
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_multi_add_handle ($mh, $conn[$i]);
}
do {
if(time() - $time >= 3) { //每3秒显示一次
foreach ($urls as $i => $url) {
$info = curl_getinfo($conn[$i]);
//下载信息
$speed = $info['speed_download'];
$speed = sprintf('%.2f',$speed / 1000);
$fileSize = sprintf('%.2f', $info['download_content_length'] / 1000 /1024);
$downloadedSize = sprintf('%.2f', $info['size_download'] / 1000 / 1024);
$percent = 0.00;
if($fileSize > 0)
$percent = sprintf('%.2f',($downloadedSize/$fileSize) * 100);
if($percent > 100)
$percent = 100;
echo "File:".$tmpFile[$i]."\t".$fileSize."MB\t".$downloadedSize."MB\t".$percent."%\t".$speed."KB/S\n";
}
$time = time();
}
curl_multi_exec($mh, $active);
}while ($active);
foreach ($urls as $i => $url) {
curl_multi_remove_handle($mh, $conn[$i]);
curl_close($conn[$i]);
fclose ($fp[$i]);
}
curl_multi_close($mh);
PHP curl_multi 多文件下载
最新推荐文章于 2021-03-23 08:45:38 发布