PHP';s cURL突然无法获得IP地址,文件内容是否是一个很好的替代品?
我们的站点上有一个页面,它使用cURL从远程域获取XML数据。几天前,它随机开始失败(可能有1/3的请求失败)。在与主机和远程站点的操作员进行调试后,我们发现curl错误为“名称查找超时”,表明存在DNS问题。我们的PHP';s cURL突然无法获得IP地址,文件内容是否是一个很好的替代品?,php,dns,Php,Dns,我们的站点上有一个页面,它使用cURL从远程域获取XML数据。几天前,它随机开始失败(可能有1/3的请求失败)。在与主机和远程站点的操作员进行调试后,我们发现curl错误为“名称查找超时”,表明存在DNS问题。我们的CURLOPT_CONNECTTIMEOUT设置为5。当我把它改为30时,每次都有效 但这是一个实时页面,我不能让访问者在等待回复时挂起30秒。另外,增加的超时时间并不能回答为什么一开始就失败的问题。该系统在安装之前已有多年,5秒的超时时间总是可以的 此外,我发现如果我做一个dns\
CURLOPT_CONNECTTIMEOUT
设置为5。当我把它改为30时,每次都有效
但这是一个实时页面,我不能让访问者在等待回复时挂起30秒。另外,增加的超时时间并不能回答为什么一开始就失败的问题。该系统在安装之前已有多年,5秒的超时时间总是可以的
此外,我发现如果我做一个dns\u get\u record()
,它每次都能工作,我很快就能得到一个有效的IP地址。因此,我修改了脚本,首先执行一个dns\u get\u record()
,然后我将cURL转换为它返回的IP,这将绕过cURL末尾的名称查找。它工作得很好,但很傻
那么第一个问题,有没有人对旋度如何或为什么会失败有什么建议。我们的主机和远程站点的主机都同意它是某个DNS服务器,但都不同意由谁的DNS服务器负责,因为它们都说自己的服务器很好,并且我们的主机说它们可以ping远程域而没有问题
第二个问题,
file\u get\u contents()
是否足以替代dns\u get\u record()
+cURL?或者我应该坚持使用dns\u get\u record()
+cURL吗?在引擎盖下,cURL\u exec
和file\u get\u contents
执行几乎相同的操作;它们都使用libresolv
来:
- 卷发信息\u姓名查找\u时间
- CURLINFO\u连接\u时间
- 预转移时间