PHP download accelerator

-Ener-

Erfahrenes Mitglied
Hallo, kann mir jemand ein einfaches (!) Script nennen welches downloads in einem Fortschrittsbalken anzeigt und welches abgebrochene Downloads wieder aufnehmen kann?
 
Nun ja, prinzipiell ist die Geschichte ganz einfach: Es wird eine Anfrage der der Ressource gesendet, vorzüglich mit der fsockopen()-Funktion. Bei dessen Antwort wird gewöhnlich auch die Gesamtgröße angegeben („Content-Length“-Header-Feld). Damit zusammen mit der Angabe einer Länge bei der fgets()-Funktion sollte es kein Problem sein, den Fortschritt auszurechnen. Das größere Problem wird wahrscheinlich der Fortschrittsbalken darstellen.
 
Hauptsächlich geht es mir ja um die "RESUME DOWNLOAD" - Funktion die bei größeren Downloads einiges erleichtern könnte, den Fortschrittsbalken kann man erstmal außen vor nehmen. Kennst du denn ein Applet welches das kann? Ich suche schon sein ca. 6 Stunden nach sowas!
 
Die einzige Schwierigkeit besteht darin, die richtigen Header-Felder zu setzen und die in der Antwort gesetzten richtig zu deuten. Der Ablauf sieht dabei etwa wie folgt aus: Bei der ersten Antwort teilt der Server über das „Accept-Ranges“-Header-Feld mit, ob er die Wiederaufnahme überhaupt unterstützt. Falls ja, kann bei einer wiederaufnehmenden Anfrage das Header-Feld „Range“ gesetzt werden, das die noch fehlenden Teile beschreibt. In der Antwort darauf beschreibt wiederum das „Content-Range“-Header-Feld, welcher Teil des Inhalts sich im Nachrichtenkörper befinden.
Wie du siehst, ist alles nicht so einfach wie es vielleicht erst scheint. Einem Skript beizubringen, sich bei der Anfrage einer Wiederaufnahme wie ein Webserver zu verhalten, ist jedoch noch schwieriger.
 
Da ich nur Bahnhof verstehe lass ich es lieber =D Wäre aber mal ein gutes Thema für ein Scriptwettbewerb wenn es sowas noch nicht gibt...
 
Ich glaube, was Gumbo mein sind die HTTP_RANGE im Header, die gesendet werden, wenn du etwas herunterlädst.
Abzufragen auf Serverseite in php per
PHP:
echo $_SERVER['HTTP_RANGE'];

Soll ein Download resumed werden, so wird folgender Header gesendet:
header("HTTP/1.1 206 Partial Content");
header("Content-Length: XXX"); // xxx Byte des neuen Startpunktes für DL
header("Content-Range: ...
usw

Hatte da mal irgendwann und irgendwo was gesehen, hoffe das hilft dir weiter.
Ich schau gleich nochmal
Gruss


//EDIT:
Schwupps und schon gefunden:
http://de.php.net/manual/de/function.fread.php#57243

Vielleicht hilft dir das weiter

Und nochmal Gruss
 
Das „Range“-Header-Feld wird eigentlich nur mit dem Statuscode 206 zusammen gesendet und dass auch nur dann, wenn tatsächlich nur ein Teil des Inhalts gesendet wird.
Übrigens kann der von dir verwiesene Algorithmus auch nicht alle möglichen Werte des „Range“-Header-Feldes verarbeiten. So führt beispielsweise „bytes=0-499“ zu seltsamen Ergebnissen; multiple Bytebereiche werden ganz missachtet.
 
Zum Herunterladen von Dateien ein PHP Skript zu schreiben halte ich für den falschen weg. Überhaupt verstehe ich nicht, wieso so viele hier versuchen mit PHP irgendwelche Aufgaben erledigen zu lasse, die über die Verwaltung einer Webseite (auch im weiteren Sinne) hinaus gehen. PHP ist doch eine Sprache um Hypertexte vorzuverarbeiten.... Ich denke du nutzt dafür einfach ein Programm à la GetRight, -ener-. Sofern du es unbedingt "selbst geschrieben haben musst", so nutze doch Java, C, C++, Object Pascal oder so!? MfG Basti
 

Neue Beiträge

Zurück