web-dev-qa-db-fra.com

PHP curl Connection timed out error

J'appelle une API utilisant curl en PHP, parfois ça marche bien et parfois je reçois Failed to connect to api-domain.com port 80: Connection timed out

C'est un peu étrange que parfois ça marche et que ça ne fonctionne pas parfois. Pour résoudre le problème, j’ai imprimé la curl_getinfo() quand il ne fonctionne pas, veuillez le vérifier ci-dessous.

Cela montre le temps de connexion = 0 et le temps total = 130 s, je ne sais pas trop ce que cela signifie. Si quelqu'un a une bonne compréhension à ce sujet, veuillez consulter le journal ci-dessous et aidez-moi à comprendre le problème exact.

[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

Merci d'avance!

Modifier

Parfois, une requête curl parvient au serveur d'API REST et parfois non. Il est ignoré au niveau même de la connexion et ne parvient pas au serveur d'API REST. Je suis un peu confus quant à la raison pour laquelle parfois il se connecte et parfois non.

10
Irfan.gwb

Après avoir lutté pendant environ une semaine et essayé toutes les options suggérées, j'ai finalement constaté qu'il ne s'agissait ni d'un problème de connexion ni d'un problème d'api-domain.com concernant les API. Un peu étrange pour moi mais vrai que c’est mon problème de mise à l’échelle SERVER à partir duquel j’appelle l’API, j’ai augmenté la configuration (RAM et CPU) et constaté que le problème avait été résolu.

J'espère que mon expérience avec ce problème aidera quelqu'un et économisera son temps de dépannage.

Merci à tous pour vos commentaires et suggestions de solutions.

0
Irfan.gwb

Reportez-vous à la documentation de curl_getinfo () , connect_time est le temps en secondes nécessaire pour établir la dernière connexion et total_time est le temps en secondes pour la dernière transaction.

Vous pouvez redéfinir les délais en utilisant curl_setopt () . Par exemple, curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 42); pour définir 42 secondes du délai d'expiration de connection ou curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 0); pour aucun délai d'expiration de connection. De la même manière, curl_setopt($cHandler, CURLOPT_TIMEOUT, 42); définira 42 secondes du délai d'expiration de execution.

6
Cid