phpbar.de logo

Mailinglisten-Archive

[php] Filekopie von Server zu Server - Timeoutproblem

[php] Filekopie von Server zu Server - Timeoutproblem

M. Tiedemann M._Tiedemann_(at)_e-mails.ch
Sat, 6 Jan 2001 10:15:21 +0100


 
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