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