php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.06.2006, 23:22  
Benutzer
 
Registriert seit: 24.01.2005
Beiträge: 56
Melchior
Standard Readfile: Abbruch mitten im Download bei großer Datei

hallo,

ich habe ein Problem mit Readfile.
Ich möchte eine ca. 100mb große Datei downloaden.
Der Download beginnt, angezeigte größe und dateinamen passt, doch bricht der Download jedesmal wirkürlich auf einmal ab. Mal schafft er es bis 20 mb, mal bis 40.

Ich bin total ratlos, hab mich schon totgesucht im netz, und leider nichts gefunden. probiert habe ich es mit Php-Version 4.x und 5.x

Hat jmd einen Tipp an was es liegen könnte?

viele grüße
marco

PHP-Code:
<?php

    $filename 
$_GET[file];
    
$extension substr (strrchr ("$filename""."), 1);
      
$size filesize($filename);

    
header("Content-type: application/$extension"); 
    
header("Content-Disposition: attachment; filename=\"$filename\"");
    
header("Content-Description: File - Download");
    
header("Accept-Ranges: bytes"); 
    
header("Content-Length: $size"); 
    
header("Pragma: no-cache"); 
    
header("Expires: 0"); 

    
readfile($filename);     
?>
Melchior ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.06.2006, 00:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Welches sind die Werte aller verwendeten Variablen?
Exakte Dateigröße vor und nach dem Download (in Bytes)?
Zergling-new ist offline  
Alt 13.06.2006, 08:28  
Benutzer
 
Registriert seit: 24.01.2005
Beiträge: 56
Melchior
Standard

morgen zergling,

also hier ma die var inhalte:

$filename=23.04.2006_Sercan_Holga.mp3
$ext.=mp3
$size=116.482.048 (bytes)

Die Size stimmt exakt mit der vom ftp überein.

Heruntergeladen try#1 24.233.753 bytes
Heruntergeladen try#2 5.083.193 bytes

gruß marco
__________________
MF goes Melchior
Melchior ist offline  
Alt 13.06.2006, 08:40  
Gast
 
Beiträge: n/a
Standard

Moin MF

Hast Du schon mal ins Manual geschaut?

http://de.php.net/manual/de/function.readfile.php

Lies Dir mal die Comments durch da steht die Lösung des Problems
 
Alt 13.06.2006, 12:11  
Benutzer
 
Registriert seit: 24.01.2005
Beiträge: 56
Melchior
Standard

hi zakmc,

danke für den Tipp.

Ich habe jetzt mal die readfile_chunked function eingebaut, dacht die wäre nur für den php 5.06er bug. Auch set_time_limit(0); steht jetzt drin.

Nur leider bricht er immer noch ab. In der Regel immer so bei 20 mb

PHP-Code:
<?php

    $filename 
$_GET[file];
    
$extension substr (strrchr ("$filename""."), 1);
      
$size filesize($filename);

    
header("Content-type: application/$extension"); 
    
header("Content-Disposition: attachment; filename=\"$filename\"");
    
header("Content-Description: File - Download");
    
header("Content-Transfer-Encoding: binary"); 
    
header("Accept-Ranges: bytes"); 
    
header("Content-Length: $size"); 
    
header("Pragma: no-cache"); 
    
header("Expires: 0"); 

    
//readfile($filename);     
    
    
set_time_limit(0);
    
    
readfile_chunked($filename); 
    
    function 
readfile_chunked($filename,$retbytes=true) {

        
$chunksize 1*(1024*1024); // how many bytes per chunk
       
$buffer '';
       
$cnt =0;
       
$handle fopen($filename'rb');
       if (
$handle === false) {
           return 
false;
       }
       while (!
feof($handle)) {
           
$buffer fread($handle$chunksize);
           echo 
$buffer;
           
ob_flush();
           
flush();
           if (
$retbytes) {
               
$cnt += strlen($buffer);
           }
       }
           
$status fclose($handle);
       if (
$retbytes && $status) {
           return 
$cnt// return num. bytes delivered like readfile() does.
       
}
       return 
$status;

?>
Melchior ist offline  
Alt 13.06.2006, 15:30  
Gast
 
Beiträge: n/a
Standard

Bei mir funktioniert das Script einwandfrei.
Habe 5 mal ein File mit ca 65mb rutnergeladen. Kein Abbruch.

Die Funktion readfile_chunked habe ich selbst bei einem download Script im Einsatz und bis jetzt hat sich noch nie einer gemeldet das der download abgebrochen ist. Da liegen die Dateigrössen bei 17mb bis ca 40mb.

Wahrscheinlich liegt der Fehler nicht im Script selber sondern woanders.

Gruss ZakMc
 
Alt 13.06.2006, 17:53  
Benutzer
 
Registriert seit: 24.01.2005
Beiträge: 56
Melchior
Standard

erstmal dickes danke fürs testen.

An was könnte es noch liegen?
Die Dateien sind bei blu1.de gehostet, die haben ne traffic-flat.

Kann es sein, dass die irgendwie beschränken per readfile?
Wenn ich direkt als Link mit speichern unter herunterlade geht es.

Eine andere Möglichkeit wäre, dass ich auf die Datei per header location verweise,
jedoch wird dann beim click mit Internet Explorer der interene Player ausgeführt, und mit speichern unter die index heruntergeladen

viele grüße und danke
marco
__________________
MF goes Melchior
Melchior ist offline  
Alt 14.06.2006, 00:04  
Benutzer
 
Registriert seit: 24.01.2005
Beiträge: 56
Melchior
Standard

ich glaube ich hab den fehler, es könnte an der max. script ausführungszeit liegen.

habe die mp3 datei + script jetzt mal auf meinen domainfactory server geschmissen, und da bricht er immer rel. schnell ab.

allg. habe ich rausgefunden das da die max script ausführungszeit bei 90sekunden liegt, die man auch nicht ändern kann, phuck.

viell weiss jmd

wenn ich mit header location auf die mp3 datei weiterleite

- per htacces den mimetype erzwingen kann?
- ob ich irgendw. anders den download statts das öffnen im browser erzwingen kann?

gruß marco
Melchior ist offline  
Alt 14.06.2006, 14:35  
Gast
 
Beiträge: n/a
Standard

Die Scriptausführungszeit bei meinem Server liegt bei 5 Minuten. Diese Einstellung kann man in der php.ini ändern. Dazu brauchst Du natürlich Zugang zu dieser Datei, was wahrscheinlich nur auf einem eigenen Rootserver zutrifft.


Könntest mal das hier versuchen ob es funktioniert:

PHP-Code:
    header('Pragma: public');
    
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    
header("Cache-Control: private",false);
    
header('Expires: 0');
    
header("Content-Type: $mime");
    
header("Content-Length: $filesize");
    
header("Content-Disposition: attachment; filename=\"$filename\"");
    
header("Content-Transfer-Encoding: binary"); 
Ansonsten den content-type auf "application/octetstream" setzen.

Desweiteren könnte man noch ob_end_claen() einbauen. http://de.php.net/manual/de/function.ob-end-clean.php Dann wird die Pufferung von PHP deaktiviert.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datei zum Download bereitstellen niels$ PHP Tipps 2008 6 17.02.2008 23:21
Automatisch generierte Datei nach Download löschen querfisch PHP Tipps 2007 2 10.04.2007 19:22
Datei download nur mit Berechtigung Soese PHP Tipps 2006 1 28.05.2006 10:11
Download bietet die falsche Datei an PHP Tipps 2006 14 05.03.2006 13:22
php datei mit readfile(); einlesen PHP-Fortgeschrittene 7 24.01.2006 19:23
Datei zeigen, aber nicht zum Download freigeben CSS PHP-Fortgeschrittene 17 12.01.2006 17:30
Download einer Datei von Fremd-Server ZeHa PHP Tipps 2005-2 11 13.10.2005 20:28
[Erledigt] Weiterleitung nach Datei Download PHP Tipps 2005 4 14.04.2005 09:22
Problem mit Datei Download PHP Tipps 2005 5 13.03.2005 14:38
Text mitten in einer Datei Schreiben PHP Tipps 2005 14 28.02.2005 12:42
Datei Download von der Webpage PHP Tipps 2004-2 6 30.11.2004 12:25
Datei nach download löschen? Calli PHP Tipps 2004-2 1 26.11.2004 10:05
datei nach download löschen PHP Tipps 2004 9 18.09.2004 20:47
datei nach download löschen HTML, Usability und Barrierefreiheit 0 18.09.2004 17:16
[Erledigt] .txt Datei verlinken für Download... 18inch HTML, Usability und Barrierefreiheit 6 27.06.2004 10:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php readfile große dateien, php download abbruch, php readfile bricht ab, download abbruch, readfile chunked, php download wird nach 5 min abgebrochen, readfile große dateien, http://www.php.de/php-tipps-2006/40666-readfile-abbruch-mitten-im-download-bei-grossyer-datei.html, readfile bricht ab, php download bricht ab, php download readfile große dateien, readfile download grosser dateien, readfile funktioniert bei großen daten nicht als download, readfile große datei, php readfile chunked, php readfile max size, php readfile size, php download abbruch erkennen, abbruch download, große downloads ohne abbruch

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.