Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误6:名称查找超时_Php_Curl_Dns - Fatal编程技术网

Php 错误6:名称查找超时

Php 错误6:名称查找超时,php,curl,dns,Php,Curl,Dns,我正在使用PHP curl_multi()来抓取网站。由于Libcurl()中的同步DNS问题,当其中一个URL未能及时解析其DNS时,整个批处理的处理将中断,并出现“Curl错误:6:无法解析主机名:名称查找超时”。不幸的是,我无法用c-ares编译Libcurl,以使DNS请求变为异步 有没有其他已知的解决方案来解决这个问题?也许我可以使用一些奇特的PHP超时来防止一个超时的DNS解析导致以下所有DNS请求也超时 如果没有,那么我如何伪造/模拟一个没有解析其DNS的URL?现在,我只是一次运

我正在使用PHP curl_multi()来抓取网站。由于Libcurl()中的同步DNS问题,当其中一个URL未能及时解析其DNS时,整个批处理的处理将中断,并出现“Curl错误:6:无法解析主机名:名称查找超时”。不幸的是,我无法用c-ares编译Libcurl,以使DNS请求变为异步

  • 有没有其他已知的解决方案来解决这个问题?也许我可以使用一些奇特的PHP超时来防止一个超时的DNS解析导致以下所有DNS请求也超时

  • 如果没有,那么我如何伪造/模拟一个没有解析其DNS的URL?现在,我只是一次运行大量URL,希望其中一个无法解析,以便我可以测试解决方案,因为DNS缓存,这显然不太好用

  • CURLOPT_CONNECTTIMEOUT、CURLOPT_DNS_CACHE_TIMEOUT或CURLOPT_IPRESOLVE等设置是否有助于解决/最小化此问题?到目前为止,这两个似乎对我都没有任何影响


  • 提前谢谢

    首先,您链接到的旧答案仅部分正确。(我是libcurl的主要作者,我们这里讨论的大部分代码都是我写的。)

    其次,Linux发行版和windows上的大多数libcurl都是使用线程解析器构建的,线程解析器可以很好地处理异步名称解析


    但要回答实际问题:您可以通过不使用主机名来避免完全进行DNS解析。直接使用IP地址。您可以为这些IP地址提供要使用的主机名的
    CURLOPT_RESOLVE
    。它看起来不太好,但应该能用。

    首先,您链接到的旧答案只是部分正确。(我是libcurl的主要作者,我们这里讨论的大部分代码都是我写的。)

    其次,Linux发行版和windows上的大多数libcurl都是使用线程解析器构建的,线程解析器可以很好地处理异步名称解析


    但要回答实际问题:您可以通过不使用主机名来避免完全进行DNS解析。直接使用IP地址。您可以为这些IP地址提供要使用的主机名的
    CURLOPT_RESOLVE
    。它看起来不太好,但应该可以工作。

    你可以在抓取之前将网站添加到主机文件中,然后它应该在毫秒或更短的时间内解析,太快了,不会引起超时-你可以在抓取之前将网站添加到主机文件中,然后它应该在毫秒或更短的时间内解析,太快而不会导致超时--您确定它的CurlOptIPResolve吗?也许你的意思是连接到?在mac上我也有这个问题。。mac没有线程解析器吗?@Wesley:如果你用这种方式构建它(苹果提供的版本),它当然有。你确定它的curloptipresolve吗?也许你的意思是连接到?在mac上我也有这个问题。。mac没有线程解析器吗?@Wesley:如果你用这种方式构建它,它当然有(苹果提供的版本)