2

我有一个为基于 PHP 的 CMS 分发的应用程序,它通过 cURL 连接到 Google 服务。最近(自从 Google 在 6 月份迁移到 IPv6 以来),我收到了一些关于连接时间极慢(一种情况下为 150 秒)或完全缺乏连接的报告(示例 curl 错误:无法连接到 2001:4860:b007: :5F: 网络不可达)。

我发现,通过 SO 和其他资源,强制 curl 使用 IPv4 解决了这些问题:

if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4'))
{
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}   

我的猜测是发出这些请求的服务器配置错误(也许说它们支持 IPv6 而实际上不支持?)。但我对 IPv6 对 DNS 查找的响应的复杂性一无所知。

通过强制 IPv4,我在正确配置的服务器上设置错误

有没有一种可靠的方法可以用来检查兼容性,并相应地设置我的 cURL 选项?

4

0 回答 0