mit
readfile_chunked() sollte es aber möglich sein, dass der Download sofort gestartet wird, ich habe das mal bei mir mit der version von php.net versucht, der download startet auch sofort, der einzige nachteil ist, das beim herunterladen dann unbekannte dateigröße steht.
hier mal ein beispiel für einen mpeg download:
PHP-Code:
<?php
function readfile_chunked($filename,$retbytes=true) {
$chunksize = 1*(1024); // how many bytes per chunk
$buffer = '';
$cnt =0;
// $handle = fopen($filename, 'rb');
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
flush();
if ($retbytes) {
$cnt += strlen($buffer);
}
}
$status = fclose($handle);
if ($retbytes && $status) {
return $cnt; // return num. bytes delivered like readfile() does.
}
return $status;
}
header('Content-type: video/mpeg');
readfile_chunked('http://www.mpg.de/bilderBerichteDokumente/multimedial/filmeWissenschaft/2004/11/atmosphaerenforschung/film.mpg');
?>
/*edit: auch ein normales readfile() sollte bewirken, dass beim Benutzer sofort "Öffnen" erscheint, readfile gibt die gelesenen daten ja direkt aus