Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Donnerstag, 3. Juli 2014, 16:55

Frage zu PHP HL² Server-Query Script

Hallo zusammen,

hoffe ich bin im richtigen Forum gelandet. Ich bin derzeit dabei eine Homepage aufzusetzen und bin auf folgendes Problem bei dem hier [[url]http://sourceserver.info/wiki/tutorial/server/php_querry_script[/url]] beschriebenen Server-Script gestoßen.
Das Script läuft wunderbar, wenn aber ein Server offline oder nicht erreichbar ist stürzt der komplette Webserver unseres Root-Servers (Linux) ab. Es ist somit keine Webseite mehr erreichbar und man muss den Apache Server neustarten.

Vielen Dank
Ichhoernchen

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Ichhoernchen« (3. Juli 2014, 17:01)


Cutti

Anfänger

Beiträge: 32

Wohnort: Köln

Rootserver vorhanden: Ja

  • Nachricht senden

2

Donnerstag, 3. Juli 2014, 20:15

Ich behaupte der Apache stürzt nicht ab, er hängt nur ewig an dem Scirpt fest. Hierzu mal in der Konfiguration von php nach max_execution_time schauen.

Das Problem ist, dass er bei udp-Verbindungen nicht feststellt wenn keine Verbindung aufgebaut wurde.

Man könnte also zum Test erst eine tcp-Verbindung aufbauen und wenn die klappte, die udp-Verbindung.

Ich hab das mal (schnell und schmutzig) in das von dir genannte Script ein gebaut.

PHP-Quelltext

1
2
3
4
5
6
7
8
      // Verbindung zum Server aufbauen
      function connect() {
        $this->fp fsockopen("tcp://".$this->ip$this->port$errno$errstr3);
        if (!$this->fp) {
          die("offline");
        }
        $this->fp fsockopen("udp://".$this->ip$this->port$errno$errstr3);
      }

3

Sonntag, 13. Juli 2014, 14:54

Danke für deine Antwort!

An sich funktioniert dein Code, nur leider baut er die Seite dann nicht richtig auf. Er listet so viele Server bis er auf einen Server stoßt der offline ist, siehe hier.
Wenn man das noch umgehen könnte und möglicherweise ein Bild anzeigen lassen könnte wenn der Server offline ist, wäre alles top :P

Vielleicht hast du/noch jemand einen Vorschlag!

MadMakz

Super Moderator

Beiträge: 1 878

Wohnort: ~#

Rootserver vorhanden: Ja

  • Nachricht senden

4

Sonntag, 13. Juli 2014, 16:45

Ersetz das die("offline"); mit einem return, continue; o.ä., jedenfalls nix mit die; oder exit; sondern einem sinnvollen handle.

Cutti

Anfänger

Beiträge: 32

Wohnort: Köln

Rootserver vorhanden: Ja

  • Nachricht senden

5

Montag, 14. Juli 2014, 12:30

Damit ist es dann noch nicht ganz getan ...

Als erstes connect ändern:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
      // Verbindung zum Server aufbauen
      function connect() {
        $this->fp fsockopen("tcp://".$this->ip$this->port$errno$errstr3);
        if (!$this->fp) {
          return false;
        }
        $this->fp fsockopen("udp://".$this->ip$this->port$errno$errstr3);
        return true;
      }


Dann noch infos verändern:

PHP-Quelltext

1
2
3
4
      // Infos vom Server holen
      function infos() {
        $connect=$this->connect();
        if (!$connect) return false;


In deinem Script, wo du die Server anzeigst, müsstest dann noch eine Abfrage einbauen, in der Art:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
$infos $verbindung->infos();
if ($infos)
{
     // Server anzeigen
}
else
{
     // Offline anzeigen oder nichts anzeigen
}

6

Freitag, 25. Juli 2014, 12:11

Nochmals danke für die Antworten, ich werde das ganze heute Abend ausprobieren und Feedback geben!

7

Montag, 4. August 2014, 10:29

Funktioniert wunderbar, vielen Danke für eure Bemühungen!! :)

Verwendete Tags

Counter, CSS, MySQL, php, Source, Strike