Hallo zusammen,
bei Tests des Release 1.7-RC2 des Adventure PHP Frameworks habe ich festgestellt, dass das Laden von XML-Inhalten via Socket erheblich länger dauert, als ein Aufruf der Ressource via Browser. Auf meiner lokalen Entwicklungsumgebung (WinXPSP3,Apache2.0.x,PHP5.2.x) führt die Abfrage zum Timeout (PHP max_execution_time), auf meiner LINUX-Testmaschine (Fedora 9,Apache2.0.x,PHP5.2.x) wird die Seite nach 160s angezeigt.
Zum konkreten Code, der IMHO das Problem darstellt. In einem DocumentController lese ich per
die Inhalte von einer Socket-Verbindung. Als Ergebnis erwarte ich ein XML, das mir die aktuellen Wetter-Meldungen anzeigt. Quelle in den Tests ist Wetter News von wetter.com. Die Variablen enthalten folgende Inhalte (zum Nachvollziehen):
Rufe ich die URL per Browser auf, so wird das XML innerhalb von 200ms ausgeliefert, mit der oben genannten Methode benötige ich dafür 160s. Hat irgendjemand eine Idee, warum ein so krasser Zeitunterschied zwischen Aufruf im Browser und per Socket-Kommunikation besteht?
bei Tests des Release 1.7-RC2 des Adventure PHP Frameworks habe ich festgestellt, dass das Laden von XML-Inhalten via Socket erheblich länger dauert, als ein Aufruf der Ressource via Browser. Auf meiner lokalen Entwicklungsumgebung (WinXPSP3,Apache2.0.x,PHP5.2.x) führt die Abfrage zum Timeout (PHP max_execution_time), auf meiner LINUX-Testmaschine (Fedora 9,Apache2.0.x,PHP5.2.x) wird die Seite nach 160s angezeigt.
Zum konkreten Code, der IMHO das Problem darstellt. In einem DocumentController lese ich per
PHP-Code:
$Socket = fsockopen($Host,80,$errno,$errstr,10);
$Query = 'GET '.$Query.' HTTP/1.0'.PHP_EOL;
$Query .= 'User-Agent: APF weather module'.PHP_EOL;
$Query .= 'Accept: */*'.PHP_EOL;
$Query .= 'Host: '.$Host.PHP_EOL;
$Query .= 'Connection: Keep-Alive'.PHP_EOL.PHP_EOL;
fwrite($Socket,$Query);
$Response = (string)'';
while(!feof($Socket)){
$Response .= fgets($Socket, 128);
}
fclose($Socket);
- $Host: feeds.feedburner.com
- $Query: /wettercom/rss
Rufe ich die URL per Browser auf, so wird das XML innerhalb von 200ms ausgeliefert, mit der oben genannten Methode benötige ich dafür 160s. Hat irgendjemand eine Idee, warum ein so krasser Zeitunterschied zwischen Aufruf im Browser und per Socket-Kommunikation besteht?

Kommentar