IP adresa, na které hostuje stránka

V souvislosti s tímto vláknem:
http://www.webzdarma.cz/forum/read.php?f=2&i=41834&t=41834
bych měl ještě jeden dotaz.

Posbíral jsem 140 URL a chtěl jsem zjistit na jakých IP adresách hostují. Použil jsem funkci gethostbyname() a u části nedošlo k převodu na IP. Zkombinoval jsem to tedy s funkcí dns_get_record(). Níže uvedený skript jsou vpodstatě dva příklady z manuálu PHP

<?php
$myhost=array(
"kuchyne-na-miru.eu",
"rekonstrukce-koupelny.eu",
"hotels.cz",
"www.kuchyne-na-miru.eu",
"www.rekonstrukce-koupelny.eu",
"www.hotels.cz"
);
reset($myhost);
while (list($key, $val) = each($myhost)) {
$ip = gethostbyname($val);
if(ip2long($ip) == -1 || ($ip == gethostbyaddr($ip) && preg_match("/.*\.[a-zA-Z]{2,3}$/",$host) == 0) ) {
$result = dns_get_record($val);
echo $val." => ".$result[0][ip]."<br />\n";
print_r($result);
echo "<br />\n";
}else{
echo "$val ==> $ip<br />\n";
}
}
?>

po této úpravě zůstaly ještě 3 adresy u kterých se převod nepovedl. Jsou součástí pole v uvedeném příkladu. Ty s doménou .eu jsou z IP adresy 80.79.16.9 a hotels.cz je z 88.221.61.225.
Jak je také ze skriptu (http://ds.mysteria.cz/dgr.php) vidět tak svou roli hraje v tom i www.

Existuje nějaký lepší způsob jak zjistit IP adresu než tem můj pokus? A jak je to s tím www? Zřejmě se tu asi nedá říci, že správně, tedy funkční, je to s www nebo bez www
Omluva!
Jako obvykle, s křížkem po funuse, jsem objevil chybu.

Místo:

if(ip2long($ip) == -1 || ($ip == gethostbyaddr($ip) && preg_match("/.*\.[a-zA-Z]{2,3}$/",$host) == 0) )

má být:

if(ip2long($ip) == -1 || ($ip == gethostbyaddr($ip) && preg_match("/.*\.[a-zA-Z]{2,3}$/",$val) == 0) )

Nyní to už tedy funguje. Jen to hotels.cz a www.hotels ukazuje jinou IP adresu
Tyhle převody IP <-> hostname aspol. jsou v PHP extréměn pomalé. Lepší je volat nějakou externí aplikaci která to převede mnohem rychleji
To je fakt. Těch 140 IP adres to vypočetlo asi za 31s a hlavně mě zarazilo, že se jednotlivé řádky nevypisovaly postupně, ale zobrazilo se to najednou. Je to na tom novém PHP5 takže asi je to nějak jinak nastavené. web-sniffer.net to měl za 2.5s a opakované načtení (Ctrl-F5) to bylo také za 2s.
Já to ale neplánuji rutinně používat a tak jsem to pojal jako možnost zkusit si něco, co jsem v PHP ještě nedělal
Jestli spis nebude problem ve scriptu :)

<?php
while (list($key, $val) = each($myhost)) {
$ip = gethostbyname($val);
if(ip2long($ip) == -1 || ($ip == gethostbyaddr($ip) && preg_match("/.*\.[a-zA-Z]{2,3}$/",$val) == 0) ) {
$result = dns_get_record($val);
echo $val." => ".$result[0][ip]."<br />\n";
print_r($result);
echo "<br />\n";
}else{
echo "$val ==> $ip<br />\n";
}
}
?>

foreach ($myhost as $key=>$val) {
... pak je more podivnych funkci
navic to v cyklu printujes
$result[0]['ip'] tady nejsou uvozovky, v cim se pak musi php nejak vyporadat
Se nedivim, ze to spotrebuje tolik casu.
Predpokladam, ze zmineny server se s tim nepara a ma vsechno indexovane v sql, proto mu dohledat ip netrva tolik, jako prostouravat hlavni uzly netu. Schvalne tam zkus ale nejake exoticke adresy, pripadne vymyslene.
pokud tím server s sql myslíš web-sniffer.net tak to asi tak nebude