有人可以幫我使用PHP函數fsockopen嗎?PHP函數fsockopen永遠不會返回false
,如果我這樣調用該函數:
$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);
具有不可用主機域,它永遠不會返回false,我不明白爲什麼!
有人可以幫我使用PHP函數fsockopen嗎?PHP函數fsockopen永遠不會返回false
,如果我這樣調用該函數:
$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);
具有不可用主機域,它永遠不會返回false,我不明白爲什麼!
試試這個
ini_set("display_errors","on")
它會顯示一個警告,如果域名是無效的,除了該函數將返回TRUE因爲返回的文件指針,這意味着文件被成功創建,FALSE會僅當它無法創建文件時才返回。
我已經嘗試過這樣的事情,它是error_reporting(E_ERROR),並且都不工作...無論如何謝謝你的回答 – 2012-07-17 10:52:11
// displays all warnings, notices and errors
ini_set('display_errors', 1);
error_reporting(E_ALL);
$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);
連接嘗試將在10秒後超時。
由於域不可用,您將收到警告。
$ errno和$ errstr將包含系統錯誤號和錯誤消息。
該函數將返回false,所以$ fp將等於false。
文檔:fsockopen
這裏是我的代碼: <? \t error_reporting(E_ALL); \t ini_set(「display_errors」,「on」); \t $ fp = fsockopen(「udp://2.2.2.2」,13,$ errno,$ errstr); \t if(!$ fp) \t \t echo「offline \ n」; \t else \t \t echo「online \ n」; ?> – 2012-07-17 11:36:45
啊,你是使用UDP。你原來的例子沒有顯示這一點。這改變了事情。從PHP手冊:
警告
UDP套接字有時會出現沒有錯誤已經打開,即使遠程主機不可達。當您向套接字讀取數據或從套接字寫入數據時,錯誤將只有 變得明顯。 原因是因爲UDP是一個「無連接」協議,其中 意味着操作系統不會嘗試爲套接字建立鏈接,直到它確實需要發送或接收數據爲止。
奇怪的是,當我運行該代碼時,我得到'$ fp'等於'bool(false)'。 – Sarke 2012-07-17 10:50:33
這是我的代碼: <? \t error_reporting(E_ALL); \t ini_set(「display_errors」,「on」); \t $ fp = fsockopen(「udp://2.2.2.2」,13,$ errno,$ errstr); \t if(!$ fp) \t \t echo「offline \ n」; \t else \t \t echo「online \ n」; ?> – 2012-07-17 11:37:46
請更新您的原始問題,這是更可讀。 – Jocelyn 2012-07-17 15:30:48