開発用サーバーでデバッグの終わったプログラムを本番サーバーにデプロイしたら、Web API の呼び出しに5秒のもかかるようになった。
調べてみると本番サーバは IPv6 対応で、PDO が名前解決のために、まず IPv6 の DNS を呼び出し、見つからない場合にそこがタイムアウトしてから IPv4 の DNS を呼び出すらしいことと判明。
解決策は PDO のオプションに
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
を追加。
libcurl を使う、他の言語でも使えそう。
ちなみに探した時点では google で 'CURL_IPRESOLVE_V4' を検索しても日本語のページは見つからなかった。