Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Processo de Download lerdo

$
0
0

Ola estou tendo um problema no processo de funcionamento em um código de forced download por método curl aplicados a header para fazer o download e renomear o arquivo na hora de baixar o problema e que o download esta caindo drasticamente a cada processo a ponto do download falhar, reiniciar do zero e velocidade chegar a 50kbs. 

<?php 
 
// Tempo de execução do script infinito	
  set_time_limit(0);
 
// Função para forçar download de qualquer arquivo
function download($file,$tamanhoGeral){
 
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-disposition: attachment; filename="arquivorenomeado.mp4"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    header('Pragma: public');
    $size = get_size($file);
    header('Content-Length: '.$size);
 
    $i = 0;
    while($i<=$size){
        //Output
        tamanhoGeral($file,(($i==0)?$i:$i+1),((($i+$tamanhoGeral)>$size)?$size:$i+$tamanhoGeral));
        $i = ($i+$tamanhoGeral);
    }
 
}
 
// Função de chamada de retorno para CURLOPT_WRITEFUNCTION
function downloadForcado($ch, $str) {
    print($str);
    return strlen($str);
}
 
// Função para obter um intervalo de bytes do arquivo remoto
function tamanhoGeral($file,$start,$end){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $file);
    curl_setopt($ch, CURLOPT_RANGE, $start.'-'.$end);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'downloadForcado');
    $result = curl_exec($ch);
    curl_close($ch);
}
 
// Pega o Tamanho total do arquivo
function get_size($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_exec($ch);
    $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
    return intval($size);
}
 
 
// Executar função e tamanho maximo 300mbs  do arquivo
download('url do link remoto aqui',314572800);
?>

Viewing all articles
Browse latest Browse all 14190