AlexBausW: + (SERVER) langsamer Response von Domain auf gleichem Server

Beitrag lesen

Hallo Alle :)

Ich habe mir ein kleines Programm geschrieben, welches mit folgender Subroutine Verbindung zu einem HTTP-Server aufnimmt sowie dort Daten anfordert, und desweiteren den Response filtert (in anderen Routinen :):

sub http_request {
        my ($request, $host, $port) = @_;

return unless scalar @_ == 3;

local $/;
        socket  SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp');
print "open socket: ", scalar localtime, "\n";
        connect SOCK, sockaddr_in($port, inet_aton($host));
print "connect socket: ", scalar localtime, "\n";
                send SOCK, $request, 0;
print "send request to host: ", scalar localtime, "\n";
                my $response = <SOCK>;
print "get response from host: ", scalar localtime, "\n";
        close   SOCK;
print "close socket: ", scalar localtime, "\n";
        return $response
}

Leider dauert die Serverantwort bzw. die Datenübertragung mit obiger Methode reproduzierbar ca. 17-18 sec. Rufe ich die angeforderte Datei direkt mit dem Browser auf, so habe ich sie schon nach ca. 3 sec auf meinem Bildschirm.

Die eingestreuten print-Anweisungen ergeben folgende Ausgabe:

open socket: Wed Jul 24 12:31:40 2002
connect socket: Wed Jul 24 12:31:40 2002
send request to host: Wed Jul 24 12:31:40 2002
get response from host: Wed Jul 24 12:31:57 2002
close socket: Wed Jul 24 12:31:57 2002

Im Access-log der angesprochenen Domain erscheint der entsprechende Eintrag zur selben Zeit, wie der Request durchgeführt wurde:

195.143.189.233 - - [24/Jul/2002:12:31:40 +0200] "GET /images/karte1.jpg HTTP/1.0" 200 15512 "http://www.genelogie-shop.de/?" "Mozilla/4.73 [de] (Win95; U)"

Beide Domains (die unter der das Skript liegt, und die unter der das Bild liegt) werden "auf" dem selben Server gehostet.
Entweder dauert die Auslieferung durch den Apachen so lange (wegen des Logfileeintrags aber imho unwahrscheinlich), oder die Datenübertragung ist zu langsam (was ich aber bei der "kurzen" Strecke nicht glauben will :), oder mein Perlskript liest die Daten nicht ordentlich vom Socket ein.

Kennt jemand dieses Problem, oder hat Vorschläge, wie ich die Ursache näher einkreisen kann? :)

Ich habe gerade nochmal das lesen vom Socket durch eine while-Schleife mit gleichzeitiger Ausgabe ersetzt:

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*)
Hoffentlich hilft diese Beschreibung bei der Lösung des Problems. :)

Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart