selbständiger abbruch von downloads

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

  • selbständiger abbruch von downloads

    ich hab ein kleines skript geschrieben um downloads zu erzwingen. es funktioniert eigentlich einwandfrei, bis auf dass die downloads nach 1.9 MB (2.000.000 bytes) einfach abgebrochen werden, ohne irgendeine fehlermeldung.

    das ist mein code:
    PHP-Code:
    <?
      $file = "somefile.mp3";
      header("Content-Description: File Transfer");  
      header('Content-type: audio/mpeg');
      header('Content-Disposition: attachment; filename="'.$file.'"');
      header("Content-Transfer-Encoding: binary");
      header("Content-Length: ".@filesize($file));
      readfile($file);
    ?>
    somefile.mp3 befindet sich im gleichen ordner wie das download-script.

    ich nehme einfach mal an, dass der code korrekt ist, denn auf einem anderen server hat er bestens funktioniert.
    gebe ich die direkte url zu der datei die zu downloaden ist in den browser ein, so wird sie komplett und ohne probleme runtergeladen. mit dem script hört es nach 1.9 MB einfach auf.

    könnte dies vielleicht auch ein server problem oder php-configurations problem sein? ich hab schon in der php.ini den wert für 'upload_max_filesize' entsprechend erhöht, brachte aber nix.
    auf dem webserver läuft übrigens php 5.0.4

    hat irgendwer eine idee was das problem sein könnte?

  • #2
    upload_max_filesize hilft bei Downloads nicht.

    Versuchs mit set_time_limit().

    Kommentar


    • #3
      hm vielleicht hat er die datei ja vorher mit nem anderen script hochgeladen. ist die datei denn korrekt aufm server?? (also 3,5 mb groß und nich nur 1,9?)

      Kommentar


      • #4
        Re: selbständiger abbruch von downloads

        @Trashar:
        Original geschrieben von mifune
        gebe ich die direkte url zu der datei die zu downloaden ist in den browser ein, so wird sie komplett und ohne probleme runtergeladen.

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          upload_max_filesize hilft bei Downloads nicht.

          Versuchs mit set_time_limit().
          tut sich nix, ... immer noch das gleiche problem.

          Kommentar


          • #6
            Re: Re: selbständiger abbruch von downloads

            Original geschrieben von onemorenerd
            @Trashar:
            oh wer lesen kann is klar im vorteil

            header("Content-Length: ".@filesize($file)); <= hast schon mal geschaut ob filesize auch den richtigen wert ausgibt?? (sonst hät ich auch kein wirklichen plan)

            Kommentar


            • #7
              Re: Re: Re: selbständiger abbruch von downloads

              header("Content-Length: ".@filesize($file)); <= hast schon mal geschaut ob filesize auch den richtigen wert ausgibt??
              ja, tuts ...
              Zuletzt geändert von mifune; 22.01.2006, 16:49.

              Kommentar


              • #8
                also das problem ist gelöst. zwar kann ich noch immer nicht erklären, wieso und weshalb, aber es scheint von wichtigkeit zu sein, die komplette url zu der datei in readfile( ) einzugeben.

                PHP-Code:
                <?
                   ...

                   readfile("http://www.meineseite.de/ordner/datei.zip");
                ?>
                ich hatte bisher immer nur die relativen pfade angegeben. anscheinend gibt es server, bzw. versionen von php die damit klar kommen und andere nicht. jedenfalls werden die downloads jetzt erfolgreich zu ende geführt.

                Kommentar


                • #9
                  datei.zip liegt doch sicherlich auf dem selben Server, wie dieses Script. Warum also der Umweg über http?

                  Kommentar


                  • #10
                    Original geschrieben von onemorenerd
                    datei.zip liegt doch sicherlich auf dem selben Server, wie dieses Script. Warum also der Umweg über http?
                    ja, genau das dachte ich auch.

                    Kommentar


                    • #11
                      Hatte auch schon Probleme mit Downloads von grossen Files. Allerdings traten die Probleme erst bei 60 -70 Mb auf.
                      Geholfen hat dann folgender Schnippel, den ich bei den User Notes unter readfile() bei php.net gefunden habe:
                      PHP-Code:
                      <?php
                      function readfile_chunked($filename,$retbytes=true) {
                         
                      $chunksize 1*(1024*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;

                      }
                      ?>
                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar

                      Lädt...
                      X