Ошибка тайм-аута соединения PHP curl - PullRequest
0 голосов
/ 13 июня 2018

Я вызываю API с использованием curl в PHP, иногда он работает нормально, а иногда я получаю Failed to connect to api-domain.com port 80: Connection timed out

Немного странно, что иногда он работает, а иногда нет.Чтобы устранить проблему, я напечатал curl_getinfo(), когда он не работает, пожалуйста, проверьте его ниже.

Он показывает время соединения = 0 и общее время = 130 секунд, я не совсем уверен, что это значит.Если у кого-то есть хорошее понимание этого вопроса, пожалуйста, просмотрите приведенный ниже журнал и помогите мне понять, в чем именно заключается проблема.

[url] => http://api-domain.com/?act=get_story_banners
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 630
[req   uest_size] => 283
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 130.335916
[namelookup_time] => 0.000016
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 744
[speed_download] => 13814
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] => 
[primary_ip] => 34.231.133.7
[certinfo] => Array()
[primary_port] => 80
[local_ip] => xxx.xxx.xxx.xxx
[local_port] => 48080

Заранее благодарен!

Редактировать

Иногдазапрос curl приходит на REST API Server, а иногда нет.Он отбрасывается на самом уровне соединения, не достигает сервера REST API.Меня немного смущает вопрос, почему иногда это соединяется, а иногда нет.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Пройдя около недели и попробовав все предложенные варианты, я обнаружил, что это не проблема с подключением и не проблема API api-domain.com.Немного странно для меня, но верно, что это проблема масштабирования моего SERVER, из-за которой я вызываю API, я увеличил конфигурацию (RAM и CPU) и обнаружил, что проблема была исправлена.

Надеюсь, мой опыт с этимПомогите кому-нибудь решить проблему и сэкономьте свое время на устранении неполадок.

Спасибо всем за комментарии и предложения по решению.

0 голосов
/ 13 июня 2018

Ссылаясь на документацию curl_getinfo () , connect_time - это время в секундах, которое потребовалось для установления последнего соединения, а total_time - это время в секундах для последней транзакции.

Вы можете переопределить тайм-ауты, используя curl_setopt () .Например, curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 42); для установки 42 секунд соединения тайм-аут или curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 0); для соединения тайм-аут.Точно так же, curl_setopt($cHandler, CURLOPT_TIMEOUT, 42); определит 42 секунды выполнения тайм-аут.

...