Ankündigung

Einklappen
Keine Ankündigung bisher.

Bitte um Rat bei fehlerfahtem Downloadscript

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bitte um Rat bei fehlerfahtem Downloadscript

    Hallo,

    ich habe folgendes Script das soweit gut funktioniert.
    Es öffnet mir automatisch einen Download. Auf dem Server liegen mehrere Dateien die unterschiedlich groß sind.

    Bei den Dateien mit ca. 30 oder 40 MB läuft alles super. Doch bei der ca. 70 MB großen Datei ist der Download nach ca. zwei Sekunden vorüber. Wenn ich mir diese Datei dann anschaue ist sie nur wenige KB groß und mit Zip natürlich nicht zu öffnen.

    Habt ihr eine Idee wo der Fehler liegen könnte?

    Der Inhalt der Zip-Datei wenn ich sie im Notepadd++ öffne lautet:
    Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 73905256 bytes) in .../open_data.php on line 34

    PHP-Code:
    header("Content-Type: application/zip");
    header("Content-Disposition: attachment; filename=\"$zip\"");
    $filename "data/song/$zip";
    $size filesize($filename);
    header("Content-Length: ".$size);
    $fp fopen($filename"rb");
    if (
    $fp)
    {
    $buffer fread ($fpfilesize ($filename));
    echo 
    $buffer;
    fclose($fp);

    lg
    ePole

  • #2
    Na was könnte wohl passiert sein?

    Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 73905256 bytes) in .../open_data.php on line 34
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Code:
      ini_set('memory_limit', '128M');
      Oben im Skript rein hauen
      "My software never has bugs, it just develops random features."
      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

      Kommentar


      • #4
        Ich glaube ich kann mir die Antwort wohl fast schon selber geben...
        Ich bin bei "df" und die erlauben mir wohl nicht größere Dateien downzuloaden als 50MB. Jedenfalls beim SharedHosting Paket. Steht halt so in der php.ini naja...muss man mit einem direkten Link arbeiten...zwar schade aber auch machbar! Und ein Managed Server ist dann doch etwas zu groß für diese Sache.

        lg
        ePole

        Kommentar


        • #5
          Zitat von Paul.Schramenko Beitrag anzeigen
          Code:
          ini_set('memory_limit', '128M');
          Oben im Skript rein hauen
          hej Paul.Schramenko,

          DAUMEN HOCH UND VIELEN DANK!!!

          das funzt...aber was war denn hier das problem wenn "df" mir doch nun etwas anderes erzählt hat?

          Kommentar


          • #6
            In der php.ini steht Standardmäßig 32MB drin kannst es für das aktuelle Skript einfach hochsetzen.
            Kann aber sein, dass dein Webhoster die ini-Veränderung nicht erlaubt...
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              Du mußt zwischen durch den cache löschen dann ist es egal wie groß die Datei und müßte mit jeder Größe funktionieren. Es gibt ja auch Seiten die Client Download über die 2Gb anbieten und die setzen sicher nicht den Apache dann auf 2 GB

              Siehe dazu auch :
              http://reeg.junetz.de/DSP/node16.html

              Versuch mal so
              PHP-Code:
              $Dateiname 'Liste_'.date('d-m-Y').'.csv'
              header("Content-type: application/octet-stream"); 
              header("Content-disposition: attachment; filename=".$Dateiname); 
              header("Pragma: no-cache"); 
              header("Expires: 0"); 
              readfile('..\export\Liste.csv'); 
              Entuell kannst du noch:
              header("Cache-Control: post-check=0, pre-check=0");
              Mit reinehmen und verwend readfile statt fopen denn bei fopen mußte nochmal extra den cache löschen.

              Mfg Splasch

              Kommentar


              • #8
                Zitat von splasch Beitrag anzeigen
                Du mußt zwischen durch den cache löschen dann ist es egal wie groß die Datei und müßte mit jeder Größe funktionieren. Es gibt ja auch Seiten die Client Download über die 2Gb anbieten und die setzen sicher nicht den Apache dann auf 2 GB

                Siehe dazu auch :
                PHP & HTTP

                Versuch mal so
                PHP-Code:
                $Dateiname 'Liste_'.date('d-m-Y').'.csv'
                header("Content-type: application/octet-stream"); 
                header("Content-disposition: attachment; filename=".$Dateiname); 
                header("Pragma: no-cache"); 
                header("Expires: 0"); 
                readfile('..\export\Liste.csv'); 
                Entuell kannst du noch:
                header("Cache-Control: post-check=0, pre-check=0");
                Mit reinehmen und verwend readfile statt fopen denn bei fopen mußte nochmal extra den cache löschen.

                Mfg Splasch
                ok, werde es heute abend versuchen und dann mal laut geben wie es sich verhält.

                Kommentar


                • #9
                  hej splasch,

                  auch dir einen super grossen dank und daumen hoch!!
                  deine variante läuft super. es scheint also auch sehr gut ohne "ini_set" zu funktionieren.

                  muss man den hoster also nicht verärgern.

                  vieleicht schaue ich mir jetzt mal genau an was bei dieser variante mit dem "cache löschen" passiert. vieleicht kann mir jemand etwas dazu erklären wie das funktioniert.

                  lg
                  ePole

                  Kommentar


                  • #10
                    jetzt hab ich doch glatt ein neues problem. die datei wird nun zwar heruntergeladen und wird als komplett angezeigt, doch ist nur um die 50 mb gross und wenn ich sie mit zip öffnen möchte ist sie beschädigt. also doch nicht vollständig geladen.

                    doch wenn ich meine variante mit dem "ini_set" einsetze läuft alles super...alles sehr merkwürdig.

                    Kommentar

                    Lädt...
                    X