• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

probleme mit fsockopen()

Status
Für weitere Antworten geschlossen.

Frank

Neues Mitglied
Hi Community,

Wie bereits einige schon wissen betreibe ich einen lizensierten Teamspeak 2 FREE-Hoster.
Um unserem Team alles zu vereinfachen geschieht die komplette Serversteuereung von der Homepage aus mit hilfe von fsockopen().

Zum beispiel wird von jeder serverinstanz bei jedem Aufruf der Seite mittels fsockopen der Status der Instanzen abgefragt (online,offline)

Oder Kundenlisten werden mittels sl (ServerList) von TS via fsockopen geholt.

Server werden durch fsockopen angelegt, geändert, gelöscht etc.

Das Problem ist nun nur darin, dass ab und zu anscheinend zu viele Abfragen mittels fsockopen eintreffen/ausgehen - wie auch immer.
Zum Beispiel wird bei der Kundenliste für jeden Kunden eine fsockopen verbindung geöffnet um die slots zu bekommen.

Manchmal dauert diese Abfrage nun seeeeeeehhhhhhrrrrr lange und wenn man sie dann abbricht und versucht die Seite aufzurufen kommt entweder
"Verbindung wurde vom Server zurückgersetzt"
oder
"Server braucht zu lange um zu antworten"
Abhilfe liefert da nur noch ein restart des VRoots bzw. des HTTP

Habt ihr einen Idee woran das liegen kann?

Ein kleines Scriptbeispiel:
PHP:
function serveradd($ip,$query,$port,$username,$password)
{
  if($socket = @fsockopen($ip,$query,$e1,$e2,2))
  {
     fgets($socket,4096);
    fputs($socket,"slogin {$username} {$password}\n");
     fgets($socket);
    fputs($socket,"serveradd {$port}\n");
     fgets($socket);
    fputs($socket,"quit\n");
     fgets($socket);
    fclose($socket);
    serverset($ip,$query,$port,$username,$password,"server_name","http://www.ts-onlyfree.de");
    serverset($ip,$query,$port,$username,$password,"server_welcomemessage","willkommen auf dem Teamspeak Server, sponsored by http://www.ts-onlyfree.de");
    return true;
  }
  else
  {
    return false;
  }
}
 
Das könnte evt. mit der Masse der Verbindungen zusammenhängen... Du müsstest die Verbindungszahl begrenzen, d.H. nur x verbindungen zulassen. Die Verbindungen loggst du in einer db. wenn zuviele verbindungen bestehen, refresh in 5 sekunden o.Ä.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben