2011-12-07 88 views
0

我目前正嘗試通過fsockopen連接至nominets whois服務,但我在閱讀答覆時遇到問題。使用PHP fsockopen WHOIS

代碼:

$fp = fsockopen("whois.nic.uk", 43, $errno, $errstr); 

if (!$fp) { 
    echo "ERROR: $errno - $errstr<br />\n"; 
} else { 
echo "<h1>Connected To The WHOIS Server.</h1>\n\n"; 
} 


fwrite($fp, "madeupdomain.co.uk\r\n"); 
$lookup = fread($fp, 4096); 
fclose($fp); 


echo $lookup; 

現在我成功地連接到whois服務器和收到答覆,但它總是錯過年底關閉。

域名:madeupdomain.co.uk註冊人:Made Up Inc.註冊人類型:未知註冊人地址:123 Fake Road City UK註冊商:Made Up。 t/a Madeup [Tag = MADEUP]網址:http://www.madeupadomain.com相關日期:註冊日期:1955年2月14日更新日期:2016年2月11日更新日期:2001年2月11日註冊狀態:註冊至續展日期。名稱服務器:ns1.madeupnamesrver.com ns2.madeupnamesrver.com ns3.madeupnamesrver.com ns4.madeupnamesrver.com在00:00:00進行的WHOIS查詢2011年12月07日 - 這個WHOIS信息是由Nominet UK提供的.uk域名的中央註冊表。此信息和.uk WHOIS爲:版權所有Nominet UK 1996 - 2011.您不得訪問.uk WHOIS或使用其中的任何數據,除非在http://www.nominet.org.uk/whois的全部使用條款允許,其中包括以下限制:( A)使用用於廣告,或它的重新包裝,重新編譯的數據,redistribut

正如你可以看到它缺少一個真正的WHOIS查詢的最後一部分,這總是會發生的,但在那裏被切斷的變化取決於位置在我查詢的域上。

有沒有人有任何建議?

謝謝。

回答

3

你只讀4096個字節:

fread($fp, 4096); 

如果你想讀的還不止這些(你顯然需要)只是增加直到EOF的數量或循環:

while (!feof($fp)) { 
    $contents .= fread($fp, 8192); 
} 
+0

謝謝,這似乎已經解決了它使用循環直到文件結束。 fread($ fp,4096); 沒有EOF就把它自己增加到8192沒有做任何事......只是好奇爲什麼? 謝謝 – Hairzo

+0

發送數據需要時間,遠程服務器無法在開始閱讀之前返回整個響應。 – duskwuff

+0

設置sleep()是合乎邏輯的;讀之前? – Hairzo