PHP Curl API Antwortzeit unterscheidet sich von verschiedenen Server

8

Ich habe eine Einrichtung, wo zwei Server einen Thin-Client (Apache, PHP) betreiben. Auf Server A wird ein Clientcomputer berücksichtigt und eine Verbindung mit Server B hergestellt, um Daten über eine Restful-API zu erhalten. Beide Server befinden sich im selben Netzwerk. Auf Server B wird die Antwort der Anforderung unten angezeigt:

%Vor%

Server B berechnet die für jede Aufgabe abgeschlossene Zeit, indem er microseconds verwendet, um den Beginn und das Ende eines Anforderungsblocks zu kennzeichnen. Aber wenn ich curl auf Server A benutze, um den Aufruf auf Server B zu machen, bekomme ich sehr seltsame Ergebnisse bezüglich der Ausführungszeit:

%Vor%

Ich erhalte für jede Zeitprüfung Folgendes:

%Vor%

Ich bin mir also nicht sicher, warum das passiert. Gibt es eine bessere Möglichkeit, Daten von einem anderen Server in Ihrem Netzwerk zu beziehen, der Ihre API enthält? Es wäre so, als würde die Twitter-Site ihre API von einem anderen Server verbrauchen, der nicht der API-Server ist. Ich würde denken, dass die Zeit für die curl der API ziemlich ähnlich zu der Zeit wäre, die von der API berichtet wird. Ich verstehe, dass die API Netzwerkverkehr und Geschwindigkeit nicht berücksichtigt, um die Verbindung zu öffnen - aber 18 Sekunden im Vergleich zu 0,43 scheint mir seltsam.

Irgendwelche Ideen hier?

    
gregavola 06.02.2014, 14:01
quelle

2 Antworten

7

Dies ist nicht mehr das Problem mit der Locke. Eher ist das Problem mit Ihrer Netzwerkeinrichtung. Sie können dies überprüfen, indem Sie einige Dinge tun.

1) Verwenden Sie den Befehl ping , um die Antwortzeit zu überprüfen.

%Vor%

2) Ebenso können Sie mit dem Befehl traceroute (für windows tracert ) auch die Antwortzeit überprüfen. Sie sollten die Antwort sofort erhalten.

%Vor%

3) Verwenden Sie die Befehlszeile wget oder curl , um eine große Datei (sagen wir 100 MB) von einem Server auf einen anderen herunterzuladen und dann zu prüfen, wie lange sie dauert. Zum Beispiel mit wget :

%Vor%

4) Abgesehen von dieser grundlegenden Routineprüfung können Sie auch einige erweiterte Tools verwenden, um dieses Netzwerkproblem zu lösen. Zum Beispiel die Befehle / Beispiele aus den folgenden zwei Links:

Testen der Netzwerkverbindung zwischen zwei Linux-Servern
Befehlszeilen-Tool zum Testen der Bandbreite zwischen 2 Servern

    
Sabuj Hassan 12.02.2014 17:55
quelle
1

Ich hatte das gleiche Problem vor etwa drei Tagen. Ich habe einen ganzen Nachmittag damit verbracht, das Problem zu finden. Am Ende kontaktierte ich meinen Serveranbieter und teilte ihm das Problem mit. Er sagte, dass dies kein Problem meines Skripts sei, sondern des Trägers (Netzwerks).

Vielleicht ist es das gleiche Problem, das ich hatte, also kontaktieren Sie Ihren Serveranbieter und fragen Sie ihn. Hast du es mit file_get_contents versucht? Es wäre interessant, wenn die Antwortzeit damit übereinstimmt.

    
julesdude 12.02.2014 08:43
quelle

Tags und Links