Mailinglisten-Archive |
Norbert Pfeiffer schrieb: > Hi oooops, > > wer lesen kann ist klar im Vorteil, obwohl, lesen koennen > allein reicht nicht, man muss auch lesen wollen ... ich kann/will lesen, es ging um eine existenten DNS-Eintrag, und nicht um einen unbekannten wo man noch nicht mal weis ob der Host überhaupt existiert! > zu Deinem Code - die Ausgabe ist: > <copy> > 0.01 : failure in 20.7166 seconds > (0 : Der Vorgang wurde ausgeführt. > ) > </copy> > also klarer Fall von Script-Timeout, das Socket-Timeout > kommt gar nicht erst zum tragen, weil der DNS-Lookup bereits > fehlschlaegt, wenn man eine DNS-lose Domain abfragt > (z.B. 'www.qawsedrf.de') und genau das habe ich behauptet. du hast behauptet: > der Irrglaube, dass das Argument Timeout in fsockopen(); > irgendwie fur den Coder nutzbar ist haelt sich wacker. > > Habe viel getestet, aber wozu dieser Parameter gut ist, > blieb mir bislang verschlossen ... :-( und diese Aussage ist nunmal schlichteweg falsch (abgesehen von dem dir verschlossen bleiben), soweit ich mich dunkel errinnere hatten wir so eine Diskussion schonmal auf der Liste, und damals klang auch heraus das man natürlich vorher die Domain auf existenz überprüfen sollte ... > ooops ... ;-) tsss, is ja wohl nicht Aufgabe von fsockopen zu überprüfen ob der Host überhaupt existiert! das sollte man natürlich vorher machen, das Timeout bezieht sich auf das öffnen des sockets, nicht auf die Namensauflösung, wenn die natürlich schon nicht klappt ... und die 20 sekunden sind die Zeit die dein System braucht um zu erkennen das es www.qawsedrf.de nicht gibt ... übrigens eine enorm lange Zeit! ... bei mir sind das nur 2 Sekunden (bei fsockopen auf nicht existenten dns-record) <?php $errno = 0; $errstr = ''; $timeouts[] = 0.01; $timeouts[] = 0.1; $timeouts[] = 1; $hosts[] = 'www.hfdhfdhfgh.de'; $hosts[] = 'www.golem.de'; $hosts[] = 'unbekannt.golem.de'; foreach ( $hosts as $host ) { foreach ( $timeouts as $timeout ) { $time = array_sum( explode( ' ', microtime() ) ); if ( gethostbyname( $host ) === $host ) { $time = array_sum( explode( ' ', microtime() ) ) - $time; echo $host . ': DNS-Error in ' . number_format($time, 4) . " seconds<br />\n"; } elseif ( @fsockopen ( $host, 80, $errno, $errstr, $timeout ) ) { $time = array_sum( explode( ' ', microtime() ) ) - $time; echo $host . ': ' . $timeout . ' : success in ' . number_format($time, 4) . " seconds<br />\n"; } else { $time = array_sum( explode( ' ', microtime() ) ) - $time; echo $host . ': ' . $timeout . ' : failure in ' . number_format($time, 4) . " seconds <br />\n"; echo '(' . $errno . ' : ' . $errstr . ")<br />\n"; } } } ?> meine Ausgabe dazu: www.hfdhfdhfgh.de: DNS-Error in 0.0029 seconds www.hfdhfdhfgh.de: DNS-Error in 0.0047 seconds www.hfdhfdhfgh.de: DNS-Error in 0.0027 seconds www.hfdhfdhfgh.de: DNS-Error in 0.0028 seconds www.golem.de: 0.01 : failure in 0.0019 seconds (10060 : Ein Verbindungsversuch ist fehlgeschlagen, da ... ) www.golem.de: 0.1 : success in 0.0999 seconds www.golem.de: 1 : success in 0.1108 seconds www.golem.de: 2 : success in 0.1157 seconds unbekannt.golem.de: DNS-Error in 0.0044 seconds unbekannt.golem.de: DNS-Error in 0.0027 seconds unbekannt.golem.de: DNS-Error in 0.0044 seconds unbekannt.golem.de: DNS-Error in 0.0029 seconds -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive