fsockopen sehr langsam

fsockopen sehr langsam

am 17.06.2006 22:48:58 von Thomas Weiler

Hallo,

ich rufe von einer PHP Seite Daten mit fsockopen von einem Java Service
(gleiche Maschine) auf. Klappt soweit sehr gut, nur dauert es manchmal
bis zu 20 Sekunden, bis die Daten geladen werden, manchmal ist die Seite
in unter einer Sekunde da.

Um zu testen, wo der Flaschenhals liegt, habe ich jeweils auf der PHP
Seite am Anfang und im Java Programm die Zeit mitgeloggt. Beide Zeiten
sind exakt gleich und die Seite wird auch in der selben Sekunde
angezeigt, weshalb ich die Java Anwendung als Schuldigen ausschliesse.

Also ergeben sich für mich zwei Möglichkeiten:
1. fsockopen wird noch vor der Abarbeitung der restlichen PHP-Codes
aufgerufen, daher ist die geloggte Zeit die, die nach der Abarbeitung
der Seite geholt wurde.
2. fsockopen ist unschuldig und der IIS braucht sehr lange, bis er die
PHP Seite geladen hat.

Hab ich eine Möglichkeit übersehen oder ist bekannt, dass fsockopen sehr
langsam ist (gibt es hier Alternativen).

Danke für alle Tips.

Re: fsockopen sehr langsam

am 18.06.2006 10:53:33 von Ulf Kadner

Thomas Weiler wrote:

> ich rufe von einer PHP Seite Daten mit fsockopen von einem Java Service
> (gleiche Maschine) auf. Klappt soweit sehr gut, nur dauert es manchmal
> bis zu 20 Sekunden, bis die Daten geladen werden, manchmal ist die Seite
> in unter einer Sekunde da.
>
> Um zu testen, wo der Flaschenhals liegt, habe ich jeweils auf der PHP
> Seite am Anfang und im Java Programm die Zeit mitgeloggt.

Sende doch einfach mal den/die Requests ohne PHP und schau obs da auch
zu so langen Wartezeiten kommen kann.

> Also ergeben sich für mich zwei Möglichkeiten:
> 1. fsockopen wird noch vor der Abarbeitung der restlichen PHP-Codes
> aufgerufen, daher ist die geloggte Zeit die, die nach der Abarbeitung
> der Seite geholt wurde.
> 2. fsockopen ist unschuldig und der IIS braucht sehr lange, bis er die
> PHP Seite geladen hat.

Keine Ahnung. Über IIS weiss ich nur wenig, da es ja schliesslich Apache
fuer lau gibt.

Wenn Du hier ein fuer Dich akzeptables Ergebnis in der Fehlersuche
erwartest ist mehr Input von Dir noetig. Welcher PHP-Code wird
verwendet, welche Umgebung (OS, Server, PHP,...) usw.

Auch eine Suche auf bugs.php.net kann manchmal Fehlerquellen zeigen.

Sinnvoll kann hier u.U. wohl auch ein Netzwerk-Monitor bzw. Sniffer sein.

> Hab ich eine Möglichkeit übersehen oder ist bekannt, dass fsockopen sehr
> langsam ist

Nein fsockopen ist nicht dafuer bekannt derartiges zu verursachen. Es
sei den bugs.php.net sagt fuer Deine PHP-Version+Serverumgebung etwas
anderes.

MfG, Ulf

Re: fsockopen sehr langsam

am 18.06.2006 11:52:01 von Thomas Weiler

Ulf Kadner schrieb:
> Sende doch einfach mal den/die Requests ohne PHP und schau obs da auch
> zu so langen Wartezeiten kommen kann.

Wenn ich den Java Service mittels Telnet aufrufe, kommt die Antwort
innerhalb von einer Sekunde

> Keine Ahnung. Über IIS weiss ich nur wenig, da es ja schliesslich Apache
> fuer lau gibt.

Stimmt, nur haben wir eine AD Domäne mit User Authentifizierung. Das
geht mit dem IIS sehr gut, für den Apache muss man extra Module
nachinstallieren, damit sich der IE mit dem gerade an Windows
angemeldeten Benutzer auf der Seite authentifiziert.
Aber der IIS ist natürlich auch ein Verdächtiger.

>
> Wenn Du hier ein fuer Dich akzeptables Ergebnis in der Fehlersuche
> erwartest ist mehr Input von Dir noetig. Welcher PHP-Code wird
> verwendet, welche Umgebung (OS, Server, PHP,...) usw.
>

Der PHP-Code ist:

$fp = pfsockopen("localhost",1444);
if (!$fp) {
echo "Fehler beim Zugriff";
}else{
fputs ($fp, $url . "\n");
$retstring = fgets($fp, 50000);
echo $retstring;
fclose($fp);
}

Umgebung: Windows XP Prof SP2 (IIS5) mit SQL Server 2000 SP3a
Java Version 1.5
PHP Ver. 5.1.2


> Auch eine Suche auf bugs.php.net kann manchmal Fehlerquellen zeigen.

hier finde ich nichts über das Problem

> Sinnvoll kann hier u.U. wohl auch ein Netzwerk-Monitor bzw. Sniffer sein.
>
>> Hab ich eine Möglichkeit übersehen oder ist bekannt, dass fsockopen
>> sehr langsam ist
>
>
> Nein fsockopen ist nicht dafuer bekannt derartiges zu verursachen. Es
> sei den bugs.php.net sagt fuer Deine PHP-Version+Serverumgebung etwas
> anderes.
>
> MfG, Ulf

Re: fsockopen sehr langsam

am 18.06.2006 12:10:47 von Thomas Weiler

Nach einigen Tests bin ich mir nun sicher, es muss an PHP im
Zusammenhang mit dem IIS liegen. Wenn ich eine leere Seite nur mit
phpinfo(); erstelle und diese aufrufe, zeigen sich ähnliche Resultate:

Rufe ich die Seite nach ca. 30-60sek erneut auf, braucht sie bis zu 10
Sekunden. Wenn ich sie dann in so ca. 3-10sek Abständen aufrufe, kommt
sie sofort.

Das gleiche Ergibt sich, wenn ich eine reine HTML Seite von .htm in .php
umbenenne. Solange sie .htm ist, kommen die Seiten sehr schnell. Sobald
sie in .php umbenannt ist ohne Änderungen am Code dauert es.

Kann man das Tunen?

Re: fsockopen sehr langsam

am 18.06.2006 15:42:05 von Sven Drieling

Thomas Weiler wrote:

Hallo,
=20
> $retstring =3D fgets($fp, 50000);

Falls weniger als 50000 Zeichen zurückgegeben werden, dürfte
es zu einem Warten aufs Timeout kommen.


tschuess
[|8:)