<?php
ob_start();
echo '<pre>';
echo 'Iniciando descarga ...<br />';
ob_flush();
flush();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://aperpen.com/file.zip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progreso');
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FILE, fopen('/downloads/file.zip', 'w+'));
$html = curl_exec($ch);
curl_close($ch);
$tamano_total = 0;
function progreso($curl, $tamano, $descargado, $upload_size, $uploaded)
{
global $tamano_total;
if(reduceoutput(300))
return;
if($tamano_total > 0){
echo 'Descargado: ',$descargado/1000,'KB de ',$tamano_total, 'KB (',round($descargado * 100/$tamano,2),'%) Velocidad: '.velocidad($descargado/1000).'<br />';
sleep(0.5);
}
else
$tamano_total = round($tamano/1000, 2);
ob_flush();
flush();
}
/* FUNCION PARA REDUCIR LA CANTIDAD DE INFORMACION MOSTRADA */
$i = 0;
function reduceoutput($r){
global $i;
if($i < $r){
$i = $i+1;
return true;
}
if($i == $r)
$i = 0;
return false;
}
/** LAST DOWNLOADED */
$lastdownloaded;
$lasttime;
function velocidad($downloaded_total){
global $lastdownloaded, $lasttime;
if(empty($lastdownloaded) || empty($lasttime)){
$lasttime = microtime(true);
$lastdownloaded = $downloaded_total;
return;
}else{
$time = microtime(true);
$downloaded = $downloaded_total-$lastdownloaded;
$spenttime = round(($time-$lasttime), 5);
$lasttime = $time;
$lastdownloaded = $downloaded_total;
$speed = $downloaded/$spenttime;
return round($speed/1000, 2).'MB/s';
}
}
echo 'Transferencia completada';
?>