Ankündigung

Einklappen
Keine Ankündigung bisher.

Downloads berechnen

Einklappen

Neue Werbung 2019

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

  • Downloads berechnen

    Hallo,

    ich hab mal einen Frage, und zwar ich möchte gern ein downloadscript machen, ABER es soll halt bei 200 Leuten die downloaden nicht mehr möglich sein zu downloaden sein.

    Das heißt:

    Datein können gedownloaded werden, aber nur wenn nicht schon 200 User am downloaden sind.

    Geht das irgendwie, das man berechnen kann wie viele am downloaden sind, also wirklich am downloaden sind?

    Gruß.


  • #2
    Zitat von CoKeSiDe Beitrag anzeigen
    Geht das irgendwie, das man berechnen kann wie viele am downloaden sind, also wirklich am downloaden sind?
    Kommt auf deine Definition von „wirklich am downloaden“ an.

    Wenn du im Script den Dateiinhalt häppchenweise in einer Schleife an den Client rausschickst, kannst du ja zwischendurch den Connection-Status abfragen - wenn der Nutzer den Download abbricht, sollte sich das damit feststellen lassen. Damit kannst du ja ein Flag setzen, oder einen Zähler rauf- und runterzählen.
    Dann musst du dir nur noch eine Möglichkeit suchen, dass die verschiedenen Scriptinstanzen auch auf den gleichen Zähler zugreifen können. Das liesse sich bspw. über Semaphores/SHMOP machen.

    Kommentar


    • #3
      Danke, hört sich für mich leider zu kompliziert an für mich zum proggen -.-'.

      Schade,

      danke trotzdem.

      Kommentar


      • #4
        Nicht getestet, aber so sollte es gehen:
        PHP-Code:
        set_time_limit(0);

        // Hier Zähler hochsetzen (MySQL)

        register_shutdown_function('shutdown');
        readfile("/pfad/der/ausserhalb/von/htdocs/liegt/download.zip");

        function 
        shutdown()
        {
          
        // Download abgeschlossen oder abgebrochen
          // Zaehler wieder runtersetzen. (MySQL)

        Siehe PHP: Connection handling - Manual

        Eventuell sollte man statt readfile aber wirklich eine Ausgabe in kleinen Häppchen bevorzugen (~16 KB Happen).
        Es könnte sein, dass readfile() wirklich immer die gesamte Datei von der Platte läd (z.B. eine riesige 4 GB Datei), auch wenn der User nach den ersten 2 MB schon abgebrochen hat. Aber atm zu faul zum testen. :P

        Was natürlich fehlt sind die Unterstützung für die HTTP-Header.

        Bei der Response, z.B. die Content-Length. Damit der Browser auch weiß wie groß die Datei ist und der Benutzer einen Fortschrittsbalken in % sehen kann.

        Beim Request eben auch die Unterstützung des HTTP-Header "Ranges". So könnte ein Downloadmanager einen abgebrochenen Download fortsetzen ohne den Teil nochmal runterladen zu müssen, den man schon hatte.

        Denn bei ner 4 GB Datei nervt es ziemlich, wenn der Donwload nach 3 GB wegen ner Provider-Zwangstrennung abbricht und der Download wieder bei 0 anfängt.

        Man sollte auch sichergehen, dass das Downloadscript nicht vom Apache nochmal durch eine GZIP-Kompression gezogen wird. Ist bei .zip-Downloads ziemlich unsinnig und belastet nur unnötig.

        Kommentar

        Lädt...
        X