Niklaus: HTTP::Request - wie kann man das "warten bis übermittelt" umgehen?

Hi Perl-Gurus

Situation:
Ich sauge mir via cgi eine beliebige Seite herunter. Die Seite gibt jedoch (eine lange Zeit) weder OK noch FEHLER zurück (zB. ein anderes cgi für die Aktien-Kurse).
Wie kann ich nun die Abfrage nach x Sekunden anhalten? (Sozusagen ein Timeout)

Folgende Zeile wartet bis alles angekommen ist:
$response = $ua->request($request);

##########################  Beispiel:  ###################################
require LWP::UserAgent;
require HTTP::Request;

print <<EOT;
Content-Type: text/html\r\n\r\n
via cgi:<br>
EOT

$url = 'http://www.bluesprof.com/index.html'; # beliebig
$ua = new LWP::UserAgent;
$ua->proxy('http',$ENV{'HTTP_PROXY'});

$request = new HTTP::Request 'GET', $url;
$response = $ua->request($request);   ################ wartet bis übermittelt!
if ($response->is_success) {
   &handleResponse($response);
} else {
   print "Error!";
   print $response->error_as_HTML;
}

sub handleResponse {
   my($response)=@_;
   my(@lines)=split(/\n/,$response->content());
   foreach (@lines) { print "$_"; }
}
########################################################################

Hoffentlich kann mir jemand bei dieser Knacknuss helfen.

Gruss Niklaus

  1. Hi Perl-Gurus

    Situation:
    Ich sauge mir via cgi eine beliebige Seite herunter. Die Seite gibt jedoch (eine lange Zeit) weder OK noch FEHLER zurück (zB. ein anderes cgi für die Aktien-Kurse).
    Wie kann ich nun die Abfrage nach x Sekunden anhalten? (Sozusagen ein Timeout)

    Hallo,
    als "Guru" fühle ich mich zwar nicht angesprochen, aber vielleicht kann ich Dir helfen:

    #!/usr/bin/perl
    alarm(300);

    ....

    Das "alarm..." beendet das Script nach 300 Sekunden.
    Ist das hilfreich?

    Reiner

  2. Hi,

    Wie kann ich nun die Abfrage nach x Sekunden anhalten? (Sozusagen ein Timeout)

    folgende Module könnten Dir helfen (spontane Suche, näher kenne ich sie nicht):

    LWP::Parallel (wenn Du mehrere Ressourcen anforderst)
    Sys::AlarmCall

    Cheatah

  3. Hi nochmals

    Also ich habe mir mal LWP::Parallel genauer angeschaut, und denke die Lösung hier zu finden.
    Danke!

    Gruss Niklaus