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):
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):
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);
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133514
Url: https://administrator.de/contentid/133514
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar