PHP curl_multi 多文件下载

$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);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值