Я не уверен, как работает passthru
и вывод команды каким-либо образом буферизован. Но вот еще один пример использования fopen
, потокового контекста для полей заголовка запроса и кускового кодирования передачи с явным сбросом:
header("HTTP/1.1 200 OK");
header("Date: Thu, 23 Jun 2011 10:16:31 GMT");
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header('Content-Disposition: attachment; filename="Untitled-1.bmp"');
header('Content-Transfer-Encoding: chunked');
header("Connection: close");
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
$fp = fopen('http://www.example.com', 'r', false, $context);
while (($buffer = fread($fp, 512)) !== false) {
echo sprintf("%X", strlen($buffer)), "\r\n", $buffer, "\r\n";
flush();
}
echo "0\r\n\r\n";
flush();
Убедитесь, что не , чтобы использовать ob_start
или любую другую выходную буферизацию.