php dns获取记录():发生临时服务器错误,

1yjd4xko  于 2022-12-21  发布在  PHP
关注(0)|答案(3)|浏览(139)

我正在查询一大堆地址,有些在线,有些不在线。我似乎无法绕过这个错误,但是,即使捕捉异常失败:(

dns_get_record(): A temporary server error occurred. 

        try {
            $result = dns_get_record('_minecraft._tcp.' . $addr, DNS_SRV);
        }
        catch (Exception $e) {
            return [$addr,$port];
        }

如果出现此错误,我希望跳过记录继续执行脚本,但当前脚本只是暂停。
感谢任何帮助!!

ajsxfq5m

ajsxfq5m1#

我也不能捕捉这个异常。我怎么知道这是一个PHP的bug:https://bugs.php.net/bug.php?id=73149
但是我找到了另一个解决方法,当你调用这个函数时,你可以使用@,这个符号会在你调用这个函数时杀死所有的错误,它看起来像这样:

$dns = @dns_get_record($domain, DNS_A);
if(!$dns){
    return false;
}
0yycz8jy

0yycz8jy2#

我可以使用下面的PHP函数获取主机的IP(A记录)

gethostbynamel(string $hostname): array|false

参考:gethostbynamel — Get a list of IPv4 addresses corresponding to a given Internet host name

isr3a4wc

isr3a4wc3#

试试这个:

try {
         $dns = dns_get_record($domain, DNS_A);
     }
     catch (Exception $e) {
         if ($e->getMessage() !== 'dns_get_record(): A temporary server error     occurred.') {
             throw $e;
         }
         $dns = false;
     }

相关问题