obtener el archivo remoto y forzar la descarga al mismo tiempo

Estoy tratando de obtener un archivo remoto y forzar la descarga al usuario al mismo tiempo. No puedo pegar el código, el código es demasiado largo. pero la función de enrollamiento funciona, pero el problema es que no pone nada hasta que obtiene el archivo remoto primero y luego lo fuerza a descargarlo al usuario.

Uso esto para decirle a Curl que devuelva una devolución de llamada

curl_setopt($ch, CURLOPT_READFUNCTION, 'readCallback');

ahora en mi función readCallback hago esto:

function readCallback($curl, $stream, $maxRead){
    $read = fgets($stream, $maxRead);
    echo $read;
    return $read;
}

pero no devuelve nada, solo espera hasta que finalice la búsqueda del archivo remoto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta