В прошлом (как часть моей библиотеки) пришла в голову эта идея, чтобы избежать чрезмерного использования памяти:
function suTunnelStream( $sUrl, $sMimeType, $sCharType = null )
{
$f = @fopen( $sUrl, 'rb' );
if( $f === false )
{ return false; }
$b = false;
$u = true;
while( $u !== false && !feof($f ))
{
$u = @fread( $f, 1024 );
if( $u !== false )
{
if( !$b )
{ $b = true;
suClearOutputBuffers();
suCachedHeader( 0, $sMimeType, $sCharType, null, !suIsValidString($sCharType)?('content-disposition: attachment; filename="'.suUniqueId($sUrl).'"'):null );
}
echo $u;
}
}
@fclose( $f );
return ( $b && $u !== false );
}
Возможно, это может вдохновить вас.