cURL経由でGoogleサービスに接続するPHPベースのCMS用に配布するアプリケーションがあります。最近 (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 をサポートしていないのに、サポートしていると言っているのでしょうか?)。しかし、DNS ルックアップに対する IPv6 応答の複雑さについては、ほとんど知りません。
IPv4 を強制することによって、適切に構成されたサーバーでエラーが発生するように自分自身を設定しますか?
互換性を確認し、それに応じて cURL オプションを設定するために使用できる堅牢な方法はありますか?