Php 错误6:名称查找超时
我正在使用PHP curl_multi()来抓取网站。由于Libcurl()中的同步DNS问题,当其中一个URL未能及时解析其DNS时,整个批处理的处理将中断,并出现“Curl错误:6:无法解析主机名:名称查找超时”。不幸的是,我无法用c-ares编译Libcurl,以使DNS请求变为异步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?现在,我只是一次运
提前谢谢 首先,您链接到的旧答案仅部分正确。(我是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:如果你用这种方式构建它,它当然有(苹果提供的版本)