PHP函数fsockopen永远不会返回false

时间:2012-07-17 10:39:25

标签: php fsockopen

有人可以帮助我使用php函数fsockopen吗?

如果我这样调用函数:

$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);

如果主机域不可用,它将永远不会返回false,我不明白为什么!

3 个答案:

答案 0 :(得分:1)

啊,你正在使用UDP。您的原始示例未显示此内容。这会改变一切。从PHP手册:

  

警告

     

即使无法访问远程主机,UDP套接字有时也会在没有错误的情况下打开。该错误只会   当您向套接字读取数据或从套接字写入数据时,这一点变得明显该   这是因为UDP是一种“无连接”协议   表示操作系统不会尝试为其建立链接   套接字直到它实际需要发送或接收数据。

答案 1 :(得分:0)

试试这个

ini_set("display_errors","on")

如果域无效,它将显示警告,除了该函数将返回TRUE因为返回文件指针,意味着文件已成功创建,仅当它无法创建文件时才会返回FALSE

答案 2 :(得分:0)

// 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