php.de

Zurück   php.de > Lösungen durch Skripte > Scriptbörse

Scriptbörse PHP Lösungen für nen schmalen Taler

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.05.2010, 00:51  
Erfahrener Benutzer
 
Registriert seit: 01.01.2010
Beiträge: 202
PHP-Kenntnisse:
Anfänger
CoKeSiDe befindet sich auf einem aufstrebenden Ast
CoKeSiDe eine Nachricht über ICQ schicken
Standard 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ß.
CoKeSiDe ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.05.2010, 01:31  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
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.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 15.05.2010, 10:55  
Erfahrener Benutzer
 
Registriert seit: 01.01.2010
Beiträge: 202
PHP-Kenntnisse:
Anfänger
CoKeSiDe befindet sich auf einem aufstrebenden Ast
CoKeSiDe eine Nachricht über ICQ schicken
Standard

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

Schade,

danke trotzdem.
CoKeSiDe ist offline   Mit Zitat antworten
Alt 24.05.2010, 23:41  
Erfahrener Benutzer
 
Registriert seit: 24.05.2008
Beiträge: 173
PHP-Kenntnisse:
Anfänger
Griffith sorgt für eine eindrucksvolle AtmosphäreGriffith sorgt für eine eindrucksvolle Atmosphäre
Standard

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.

Geändert von Griffith (24.05.2010 um 23:48 Uhr).
Griffith ist offline   Mit Zitat antworten
Antwort


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
readfile mit fortschrittsanzeige php

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:06 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