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:
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?
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.
2) Ebenso können Sie mit dem Befehl traceroute
(für windows tracert
) auch die Antwortzeit überprüfen. Sie sollten die Antwort sofort erhalten.
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
:
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
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.