phpbar.de logo

Mailinglisten-Archive

[php] Link-Verfügbarkeit

[php] Link-Verfügbarkeit

Friedhelm Betz holliwell at gmx.net
Fre Aug 20 15:08:02 CEST 2004


Hi,

cool bleiben ;-))

[...]
>
> > ooops ... ;-)
>
> tsss, is ja wohl nicht Aufgabe von fsockopen zu überprüfen ob der Host
> überhaupt existiert!

Kannst Du aber nicht verhindern;-)
Mach mal Dein @ vor fsockopen weg, lass Dir Warnings anzeigen und gib 
http://www.qawsedrf.de oder einen anderen Fantasienamen an.

Bei fsockopen passiert folgendes:
1.) es wird geprueft ob es den 'host/service' gibt -> nein, Pech gehabt, das 
kann dauern, oder auch nicht
2.) falls bei 1.) ja wird ein connect() versucht, ab hier laeuft der timeout 
von fsockopen.
3.) Wenn connect() aus 2.) nicht innerhalb des timeout erfolgreich war -> 
Abbruch

Mit microtime vor und nach fsockopen kann man nur die gesamte Zeit messen, die 
1.) und 2.) zusammen brauchen. Wieviel Zeit fuer den connect() call 
verbraucht wird, laesst sich so nicht sagen.

Hat man Pech und 1.) ist aus welchen Gruenden auch immer langsam, kann das 
dauern, beeinflussen laesst sich das mit timeout bei fsockopen auf jeden Fall 
nicht und verhindern auch nicht.

> das sollte man natürlich vorher machen,

Spricht nix gegen, aber ein existenter DNS Eintrag oder eine sonstige Prüfung 
ist zwar besser als nix, aber wir alle wissen, dass es bei DNS einige 
Unwaebarkeiten gibt. gethostbyname, etc. ist keine Garantie, dass ein socket 
geoeffnet werden kann. 

> das Timeout bezieht sich auf das 
> öffnen des sockets, nicht auf die Namensauflösung, 

Richtig, aber wie gesagt laesst sich eine Pruefung bei fsockopen nicht 
abstellen. Hat man Pech und gethostbyname, etc. liefern was erfolgreiches, 
kann es bei fsockopen trotzdem dauern -:(

Gruesse
Friedhelm

-- 
http://www.jungle-world.com/

php::bar PHP Wiki   -   Listenarchive