有人可以帮助我使用 php 函数 fsockopen 吗?
如果我这样调用函数:
$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);
使用不可用的主机域,它永远不会返回 false,我不明白为什么!
啊,你正在使用UDP。您的原始示例没有显示这一点。这改变了事情。来自 PHP 手册:
警告
即使远程主机无法访问,UDP 套接字有时也似乎已打开且没有错误。只有当您从套接字读取或写入数据时,该错误才会变得明显。这样做的原因是因为 UDP 是一种“无连接”协议,这意味着操作系统不会尝试为套接字建立链接,直到它真正需要发送或接收数据。
// 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
尝试这个
ini_set("display_errors","on")
如果域无效,它将显示警告,除了该函数将返回 TRUE 因为返回了文件指针,这意味着文件创建成功,只有当它无法创建文件时才会返回 FALSE。