Hallo Christian,
[Skript das Daten über HTTP anfordert]
perldoc LWP::UserAgent :)
Auch eine Möglichkeit, aber bei mir imho Overhead, da ich alle Header aus einem Request an das Skript einfach nach Filterung/Manipultion as_is an die in PATH_INFO angegebene Resource weiterreichen will. Da tut es imho auch ein "send SOCKET $request". :)
socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp');
perldoc IO::Socket (das ist in der Standard-Distribution)
Auch eine Möglichkeit, wobei hier aber IO::Socket iirc nicht wesentlich mehr ist, als ein Objekt-Interface für die entsprechenden Core-Funktionen.
[...]
while (<SOCK>) { print }
Siehe da, die Header-Daten und auch ein Teil des Inhalts ist
"sofort" da. Dann wartet die Ausgabe, bis der Rest der Daten
eintrudelt. Mit einem anderen Bild geht es genauso. Fordere ich
Text bzw. HTML-Dateien an, gibt es diese Verzögerung nicht!?
(*verwirrtbin*)
Du weisst aber schon, dass es in Binaer-Dateien keine Zeilen gibt?
Will heissen, der <>-Operator muss dann komplett alles aus dem Socket
lesen -- es gibt schliesslich nur eine einzige Zeile.
Hmmm, vielleicht verstehe ich Dich jetzt falsch, aber imho tue ich doch genau das. :) Mit "local $/" dürfte Perl auch im Binärstream vorkommende 0A bzw. 0D ignorieren, und den Datenstrom komplett in meine Variable schreiben ($response = <SOCK>;)!?
IMHO solltest du read() bzw. sysread() benutzen und kleine (z. B.
128 Byte) Bloecke lesen. Warum benutzt du eigentlich nicht
LWP::UserAgent?
Zu 1) Auch dies bringt keine Geschwindigkeitssteigerung:
my $response = ''; my $buffer;
while (read SOCK, $buffer, 128) {
$response .= $buffer;
}
Wiederum dauert die Übertragung eines Bildes auf dem selben Server ca 17 sec. während eine mehr als 3mal so große HTML-Datei praktisch sofort (<= 1 sec.) vollständig geladen ist.
Bsp.:
HTML: http://www.dynamic-web-development.de/cgi-bin/filterproxy/server.cgi/http://www.ahnenforschung.net/
BILD: http://www.dynamic-web-development.de/cgi-bin/filterproxy/server.cgi/http://www.ahnenforschung.net/images/logo/logo.gif
Zu 2) siehe oben. Einerseits glaube ich nicht, daß es dadurch schneller wird (es werden ja im Endeffekt imho doch die gleichen Corefunktionen verwendet, ich kann mich aber auch fliegen ähh irren ;)) und Andererseits möchte ich relativ einfach Request und Response (jeweils Header oder auch Content) filtern, ohne durch die vielfältigen Möglichkeiten von LWP::UserAgent abgelenkt zu werden. :)
Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart