3

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

如果我这样调用函数:

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

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

4

3 回答 3

1

啊,你正在使用UDP。您的原始示例没有显示这一点。这改变了事情。来自 PHP 手册:

警告

即使远程主机无法访问,UDP 套接字有时也似乎已打开且没有错误。只有当您从套接字读取或写入数据时,该错误才会变得明显。这样做的原因是因为 UDP 是一种“无连接”协议,这意味着操作系统不会尝试为套接字建立链接,直到它真正需要发送或接收数据。

于 2012-07-17T12:05:54.463 回答
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

于 2012-07-17T11:10:35.687 回答
0

尝试这个

ini_set("display_errors","on")

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

于 2012-07-17T10:47:27.653 回答