Frage

Ich versuche, ein System zur Überwachung Site / Server-Uptime in PHP zu bauen, wird das System benötigt wird Tausende von Domains zu überprüfen / ips eine Minute. Ich habe in Curl sieht aus, als dies scheint die beste Methode zu sein.

Edit: Das System wird benötigt, um einen Server zu sondieren, überprüfen Sie die Reaktionszeit angemessen ist, und dessen Antwortcode zurück. Es wird dann eine Zeile zu einem MySQL hinzufügen db Antwortzeit und Statuscode enthält. Die Mitteilung Teil des Systems ist recht geradlinig von dort. Das System wird auf dedizierten Servern sein. Hoffe, dass dies fügt einige Klarheit.

War es hilfreich?

Lösung

Warum nicht für den KISS-Ansatz und die Nutzung von PHP get_headers () Funktion?

Wenn Sie den Statuscode abrufen möchten, hier ist ein Ausschnitt aus den Kommentaren der PHP-Handbuch Seite:

function get_http_response_code($theURL) {
  $headers = get_headers($theURL);
  return substr($headers[0], 9, 3); 
}

Diese Funktion (als ein Kern PHP Feature) sollte als curl schneller und effizienter sein.

Andere Tipps

Wenn ich richtig verstehe, ist dieses System von Ihnen ständig eine Verbindung zu Tausenden von Domains / ips sein, und wenn es funktioniert, geht davon aus, dass der Server und läuft?

Ich nehme an, Sie cURL verwenden könnte, aber es wäre vor allem eine lange Zeit in Anspruch nehmen, wenn Sie Tausende von Anfragen reden -. Sie richtig für diese Arbeit mehrere Server und viel Bandbreite benötigen würde

Sie können auch einen Blick auf Multi cURL für Multi-Threaded-Anfragen nehmen (dh. Gleichzeitig 10+ cURL Anfragen aussendet, statt einen nach dem anderen).

http://php.net/manual/en/function .curl-Multi-exec.php

Es gibt sehr gute Werkzeuge für solche Dinge. Keine Notwendigkeit, schreiben Sie es auf eigene Faust.

Hier finden Sie aktuelle Nagios zum Beispiel. Viele Administratoren nutzen sie für die Überwachung.

Ihr Engpass wird für einen bestimmten Host zu reagieren in warten. Bei einer 30 Sekunden Zeitüberschreitung und N-Hosts zu überprüfen und alle, aber der letzte Host nicht reagiert, müssen Sie bis 30 warten (N-1) Sekunden, um den letzten Host zu überprüfen. Sie können erhalten nie die letzte Host zu überprüfen.

Sie müssen sicherlich mehrere HTTP-Anforderungen senden - entweder mehr cURL wie bereits angedeutet, oder die HttpRequestPool Klasse für ein OO-Ansatz.

Sie müssen auch prüfen, wie die Menge von N-Hosts brechen eine maximale Anzahl von Untergruppen zu prüfen, nach unten in das Problem zu vermeiden, andernfalls die einen Wirt wegen mit dem ersten Deal mit einer Warteschlange von Nicht-Reaktion zu erreichen Hosts.

Überprüfen N Hosts von 1 Server stellt die größte Chance, nicht erreicht einen oder mehr Hosts aufgrund einer Warteschlange von nicht reagierenden Hosts. Dies ist die billigste, einfachste und am wenigsten zuverlässige Option.

Überprüfen 1 Ausrichter muss jeder von N Servern präsentiert die geringste Chance, nicht ein Erreichen nicht erreicht einen oder mehrere Hosts aufgrund einer Warteschlange von nicht reagierenden Hosts. Dies ist die teuerste, (eventuell) schwierigste und zuverlässigste Option.

Betrachten wir eine Kosten / Schwierigkeiten / Zuverlässigkeit Balance, die am besten für Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top