it-swarm.com.de

PHP curl Zeitüberschreitungsfehler der Verbindung

Ich rufe eine API mit curl in PHP auf, manchmal funktioniert es gut und manchmal bekomme ich Failed to connect to api-domain.com port 80: Connection timed out

Es ist ein bisschen seltsam, dass es manchmal funktioniert und manchmal nicht. Um das Problem zu beheben, habe ich die curl_getinfo() Funktion ausgedruckt, die nicht funktioniert. Bitte überprüfen Sie sie unten.

Es wird Verbindungszeit = 0 und Gesamtzeit = 130 Sekunden angezeigt. Ich weiß nicht genau, was es bedeutet. Wenn jemand ein gutes Verständnis davon hat, lesen Sie bitte das folgende Protokoll und helfen Sie mir, das genaue Problem zu verstehen.

[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

Danke im Voraus!

Bearbeiten

Manchmal kommt die Curl-Anforderung an den API-Server REST und manchmal auch nicht. Es wird auf Verbindungsebene selbst verworfen und erreicht nicht den REST - API-Server. Ich bin etwas verwirrt, warum es manchmal eine Verbindung herstellt und manchmal nicht.

10
Irfan.gwb

Nachdem ich mich etwa 1 Woche lang gekämpft hatte und alle vorgeschlagenen Optionen ausprobiert hatte, stellte ich fest, dass es sich weder um ein Verbindungsproblem noch um ein API-Problem von api-domain.com handelte. Etwas seltsam für mich, aber wahr, es ist mein SERVER-Skalierungsproblem, von dem aus ich die API aufrufe. Ich habe die Konfiguration (RAM und CPU) erhöht und festgestellt, dass das Problem behoben wurde.

Hoffen Sie, dass meine Erfahrung mit diesem Problem jemandem hilft, und sparen Sie sich Zeit für die Problembehandlung.

Vielen Dank an alle für das Kommentieren und Vorschlagen der Lösungen.

0
Irfan.gwb

Beziehen Sie sich auf die Dokumentation von curl_getinfo () , connect_time ist die Zeit in Sekunden, die die letzte Verbindung aufgebaut hat, und total_time ist die Zeit in Sekunden für die letzte Transaktion.

Sie können die Zeitüberschreitungen mit curl_setopt () neu definieren. In diesem Beispiel können Sie mit curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 42); 42 Sekunden von connection timeout oder curl_setopt($cHandler, CURLOPT_CONNECTTIMEOUT, 0); für kein connection timeout einstellen. Auf dieselbe Weise definiert curl_setopt($cHandler, CURLOPT_TIMEOUT, 42); 42 Sekunden von execution Timeout.

6
Cid