IIS 7 mit PHP - Download bricht immer bei 81,8MB ab
Ich hab nach dem Wechsel von Debian auf Windows Server 2008 R2 Datacenter das Problem, dass die Downloads über mein Downloadscript immer bei 81,8mb abbrechen. Auch wenn ich andere PHP-Funktionen zum auslesen der Datei oder dem senden nehme passiert genau das gleiche.
Hier die phpinfo: http://server.kdgbusiness.de/php.php
Einstellungen sind weitestgehend auf Standard gesetzt.
Suche im Forum/Google brachte auch nichts brauchbares (wie gesagt wenn ich andere Funktionen benutze passiert genauch das gleiche)
Hier eines der Codeschnipsel (bis auf die filesize funktion wie auf dem debian server, liefert aber die richtige filesize):
Einstellungen sind weitestgehend auf Standard gesetzt.
Suche im Forum/Google brachte auch nichts brauchbares (wie gesagt wenn ich andere Funktionen benutze passiert genauch das gleiche)
Hier eines der Codeschnipsel (bis auf die filesize funktion wie auf dem debian server, liefert aber die richtige filesize):
function dos_filesize($fn) {
if (is_file($fn))
return exec('FOR %A IN ("'.$fn.'") DO @ECHO %~zA');
else
return '0';
}
if (is_file($file['path'])) {
// $length = $file['size'] = shell_exec('ls -l "'.$file['path'].'" | cut -f 5 -d " "'); # LINUX
$length = $file['size'] = dos_filesize($file['path']); # WIN
$f = fopen($file['path'], 'rb');
$start = 0;
if (preg_match('/^bytes=(\d*)-(\d*)$/i', $config['range'], $r)) {
if ($r[1] == '')
$start = 0;
else
$start = min($r[1], $file['size'] - 1);
if ($r[2] == '')
$length = $file['size'] - $start;
else
$length = min($r[2], $file['size'] - 1) - $start + 1;
header('HTTP/1.1 206 Partial content');
header('Content-Range: bytes '.$start.'-'.($start + $length - 1).'/'.$file['size']);
}
header('Pragma: no-cache');
header('Expires: 0');
header('Cache-Control: private');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0, false');
header('Accept-Ranges: bytes');
header('Content-Type: application/octet-stream; charset=utf-8');
header('Content-Disposition: attachment; filename="'.$file['name'].'"');
header('Content-Length: '.$length);
header('Content-Transfer-Encoding: binary');
if ($config['maxspeed'] > 0)
$buffsize = $config['maxspeed'];
else
$buffsize = 4096;
$read = 0;
fseek($f, $start);
while (!feof($f) && ($read < $length)) {
$buff = fgets($f, min($buffsize, $length - $read));
$read += strlen($buff);
echo $buff;
if ($config['maxspeed'] > 0) {
flush();
sleep(1);
}
}
fclose($f);
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 133514
Url: https://administrator.de/contentid/133514
Printed on: April 25, 2024 at 01:04 o'clock
3 Comments
Latest comment