Я использую curl на моем WordPress-сайте (размещенном на aws linux), чтобы получить информацию от нескольких API. Проблема: я получаю тайм-аут подключения только от одного API. Я также связался с провайдером API, и они сказали, что API работает нормально. Тот же код работал нормально 5 дней назад.
Теперь, пройдя стек и выполнив несколько вариаций, мы получим следующие результаты:
1) Тот же код работает в localhost.
2) Это также работает в почтальоне.
3) Код был скопирован с Почтальона на сайт, но время ожидания истекло. 4) Я отредактировал aws vpn nacl, чтобы разрешить весь трафик как входящего, так и исходящего в дополнение к тем, которые рекомендованы aws, все еще получая тайм-аут.
Это базовая функция, которую я использую, скопировал с почтальона и затем изменил:
function my2get_curl($myurl){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $myurl,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_USERAGENT =>$user_agent,
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
$info = curl_getinfo($curl);
curl_close($curl);
if ($err) {
echo " cURL Error #:" . $err;
echo json_encode($info,JSON_PRETTY_PRINT);
die('');
} else {
return $response;
}
}
Вот ошибка результата / скручивания (то же самое для http, за исключением того, что номер порта изменяется на 80):
Failed to connect to www.travelpayouts.com port 443: Connection timed out
curl_info:
{ "url": "https:\/\/www.travelpayouts.com\/whereami?locale=en&callback=useriata&ip=<my.ip.address>", "content_type": null, "http_code": 0, "header_size": 0, "request_size": 0, "filetime": -1, "ssl_verify_result": 0, "redirect_count": 0, "total_time": 21.03931, "namelookup_time": 0.066799, "connect_time": 0, "pretransfer_time": 0, "size_upload": 0, "size_download": 0, "speed_download": 0, "speed_upload": 0, "download_content_length": -1, "upload_content_length": -1, "starttransfer_time": 0, "redirect_time": 0, "redirect_url": "", "primary_ip": "", "certinfo": [], "primary_port": 0, "local_ip": "", "local_port": 0 }
Что-то не так с кодом или (более вероятно) настройками aws? Как именно я могу выяснить причину проблемы и исправить ее?