Mailinglisten-Archive |
Ich habe es schon öfters erlebt, daß Server einen unterbrochenen Download an der Unterbrechungsstelle wiederaufnehmen können. Ich habe das mal mit einem Packet-Sniffer an einem .jpg mit 43.615 Byte Länge belauscht, so sieht das in HTTP aus: 1. Anfrage, ob die Datei sich verändert hat GET«spc»/path/to/image.jpg«spc»HTTP/1.0«cr»«lf» If-Modified-Since:«spc»Tue,«spc»22«spc»Feb«spc»2000«spc »02:21:50«spc»GMT;«spc»length=43615«cr»«lf» Referer:«spc»http://host.domain.tld/path/to/ref.html«cr»«lf» Connection:«spc»Keep-Alive«cr»«lf» User-Agent:«spc»Mozilla/4.5«spc»(Macintosh;«spc»I;«spc»PPC) «cr»«lf» Host:«spc»host.domain.tld«cr»«lf» ... restliche Header-Daten ... 2. Bestätigung: Unverändert HTTP/1.1«spc»304«spc»Not«spc»Modified«cr»«lf» Date:«spc»Sat,«spc»06«spc»Jan«spc»2001«spc»05:24:28«sp c»GMT«cr»«lf» Server:«spc»Apache/1.3.12«spc»(Unix)«spc»«spc»(Red«spc»H at/Linux)«spc»PHP/3.0.12«cr»«lf» Connection:«spc»close«cr»«lf» «cr»«lf» 3. Teilweiser Request ab Byte 22.747 GET«spc»/path/to/image.jpg«spc»HTTP/1.0«cr»«lf» Referer:«spc»http://host.domain.tld/path/to/ref.html«cr»«lf» Connection:«spc»Keep-Alive«cr»«lf» User-Agent:«spc»Mozilla/4.5«spc»(Macintosh;«spc»I;«spc»PPC) «cr»«lf» Range:«spc»bytes=22747-«cr»«lf» Request-Range:«spc»bytes=22747-«cr»«lf» Host:«spc»host.domain.tld«cr»«lf» ... restliche Header-Daten ... 4. Es geht weiter ab Byte 22.747 HTTP/1.1 206 Partial Content Date: Sat, 06 Jan 2001 05:24:31 GMT.. Server: Apache/1.3.12 (Unix) (Red Hat/Linux)PHP/3.0.12 Last-Modified: Tue,22 Feb 2000 02:21:50 GMT Accept-Ranges: bytes Content-Length: 20868 Content-Range: bytes 22747-43614/43615 Connection: close Content-Type: image/jpeg und schon pladdern die Daten ab Byte 22.747 Ich schätze mal, mit Range und Request-Range läßt sich hervorragend der Abschnitt eingrenzen, den man holen will. Da müßte man mal per telnet ausprobieren: Range:«spc»bytes=3000-4000«cr»«lf» Request-Range:«spc»bytes=3000-4000«cr»«lf» Der Rest, den Script den jeweiligen Range auf einem Schmierzettel notieren zu lassen, beim nächsten Aufruf dort fortzusetzen und an die Datei ranzuschreiben, sollte jetzt ein Kinderspiel sein. HTH Grüße TJ
php::bar PHP Wiki - Listenarchive