wie kann ich eigenes server-script auf 1&1 webspace star

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

Midimaster

Betreff: wie kann ich eigenes server-script auf 1&1 webspace star

BeitragMi, Sep 18, 2013 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Bisher habe ich Kommunikationen meiner Spiele mit einer Zentrale immer mittels http-GET oder http-PUT gecoded.
Die "Server-Seite" war dabei immer ein php-Script auf meiner Website bei 1&1.

Das hat bisher immer ausgereicht. nun möchte ich in einem Echtzeitspiel eine Kommunikation aufbauen, die wenn sie erst mal geöffnet ist, bestehen bleibt und nicht wie bei http bei jedem Zugriff neu erschaffen werden muss.
Ich erwarte mir dadurch schnellere Antwortzeiten....

(Ich hoffe ich beschreibe das einigermaßen verständlich... ich bin nämlich ein Netzwerk-Laie.)

Auf einem lokalem Xampp gelingt mir auch schon den Spiel-Server mit einem php-script server.php hochzufahren. Mit der Konsole kann ich anschließend schon sowas wie...
Code: [AUSKLAPPEN]
telnet 127.0.0.1 10000

...eingeben und der Spiel-Server antwortet wie erwartet.

Übetrtrage ich das selbe Startup-php-Script auf meine Website und rufe es auf, führt es zu folgender Fehlermeldung:

Zitat:
midimaster.de
Fatal error: Call to undefined function socket_create() in /homepages/14/d672xxx/htdocs/xxx/server.php on line 14


Bedeutet das nun, dass sowas bei 1&1 gar nicht erlaubt ist?

Brauche ich für sowas schon einen Root-Server? Hat da jemand Erfahrungen damit?

Was sind Eure Ratschläge?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Xeres

Moderator

BeitragMi, Sep 18, 2013 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
PHP ist generell nichts für "Echtzeit". Webserver sind dafür gedacht, Webseiten und Dateien aus zu liefern. HTTP Anfragen und Spiele passen da nicht wirklich zusammen - damit bekommst du nämlich niemals eine ständige Verbindung hin.
Was du wirklich möchtest, ist eine Server-Version deines Spiels. Die kann alle Datenstrukturen deines Spiels kennen und validieren. Du solltest also so weit Zugriff auf deinem Server haben, dass du eine eigene Anwendung laufen lassen kannst und die auch das Recht besitzt, auf einem Port zu senden/empfangen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Krusby

BeitragMi, Sep 18, 2013 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte das auch mal so Versucht wie du Midimaster aber bin auch daran gescheitert oder besser gesagt nichts Sinnvolles bei herausgekommen !
Habe mir dann ein Windows VServer gemietet für Schlappe 7 Euro im Monat den Bediene ich Komplett über die Remotesteuerung also ganz easy Copy/Past Very Happy .
So konnte ich dann ein Server in Basic Programmieren der Daten Empängt, Verarbeitet und gegebenenfalls weiter Sendet.
Gewinner des BCC 76

Midimaster

BeitragMi, Sep 18, 2013 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort.

Aber das bedeutet ja dann, dass man einen eigenen Rechner als Server laufen lassen soll. Zuhause? Windows-Rechner und BlitzMax? Oder gibt es da Lösungen auf virtuellen Rechnern? Wie macht ihr das?

Was genau spricht gegen php? Auf 1&1 wickelt so ein Script zur Zeit Anfragen meiner User in Zeiten <0.0005 sec aus. Zu langsam ist es also nicht...

Ich würde den Spiele-Server nur als Relay-Station zwischen zwei Android-Usern verwenden wollen. Der Eine schreibt ein Ereignis rein. Der Andere holt es dort ab. Denke ich da falsch?

Das klappt auch noch bei 1000 solchen Spiele-Paaren gleichzeitig. Aber unter html-Post wegen des immer neuen Aufbaus eben mit einer ping-Zeit >250msec. Würde ich durch direkte Sockets hier schnellere Zeiten erreichen?

Würde ich auf einem Rechner zuhause wirklich bessere Zeiten erreichen?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

DAK

BeitragDo, Sep 19, 2013 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
vServer = Virtueller Server gibt es, wie Krusby gesagt hat, auch ganz billig zu Mieten.

Mit PHP kannst du das auch so machen, wie du willst, nur gibt es dann keine echte Echtzeitkommunikation. Leitungen offen halten geht soweit ich weiß leider nicht (kann mich aber irren). Das heißt, du musst, nachdem der eine seine Daten geschrieben hat, vom anderen periodisch auf Änderungen überprüfen.

Wenn du nur so ungefähr Echtzeit brauchst (also rundenbasierte Spiele oder andere Spiele, wo es auf das Timing wirklich nicht ankommt), dann kannst du das so machen. Wenn du wirkliche Echtzeit brauchst, dann kommst du nicht um einen eigenen (echten oder v)Server rum. Wenn die Handys nicht im WLAN (oder im gleichen WLAN) und damit hinter einem NAT sind, dann kannst du eine Direktverbindung versuchen. Was ginge, wäre, dass du zuerst eine Direktverbindung versuchst, und wenn das nicht klappt, du als Fallback den Server nimmst.

Edit: Was natürlich auch geht (wenn du eine Sprache verwendest, die unter Linux rennt, ist dass du dir einen Raspberry Pi holst und als Server verwendest. Man könnte sogar noch weiter gehen, und ein altes Android-Handy als Server verwenden. Wenn du nicht viel Leistung brauchst, dann sollte das schon genügen.
Gewinner der 6. und der 68. BlitzCodeCompo

Midimaster

BeitragDo, Sep 19, 2013 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Entschuldigt, dass ich ich hier noch mal nachfrage...

Mit welchen Zeitunterschieden (Laufzeiten) muss ich den rechnen, wenn ich einen Server....

...als php-Script für einen http-request-Zugriff

...als BlitzMax auf eigenem Rechner mit TCP-Socket

... als VServer unter Unix/Windows

für Spiele verwende. Ist nicht die Laufzeit durch das Internet sowieso der langsamste Teil?

Derzeit teste ich mit Monkey ein httprequest mit "Post" auf localhost und komme immer nur auf 20-30msec vom Senden der Anfrage bis die Antwort zurück ist. Das php-Script benötigt dabei Zeiten zwischen 0msec und 9msec.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
  • Zuletzt bearbeitet von Midimaster am Fr, Sep 20, 2013 15:00, insgesamt 3-mal bearbeitet

DAK

BeitragDo, Sep 19, 2013 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
VServer vs eigener Rechner: kommt stark auf die Anwendung an. Der VServer steht üblicherweise an einem Standort mit schneller Internetanbindung, hat dafür aber nur recht wenig Rechenleistung und RAM. Geht es nur um Netzwerkgetuhe ohne viel Rechenbedarf, dann wird er eventuell sogar deutlich besser sein, als dein Rechner. Was Rechenleistung angeht, kommt es natürlich auf deinen Rechner an, und darauf, was für einen VServer du nimmst.

Der große Vorteil von einem Rechner/Server auf dem du echte Programme (im Gegensatz zu PHP-Skripten) laufen lassen kannst, ist die dauerhafte Verbindung, durch die du viel weniger Overhead (keinen HTML-Header) hast. Das steigert deinen Nutzdatendurchsatz. Dazu kommt noch, dass PHP sehr langsam ist, im Vergleich zu nativem Code. Viel mehr als ein Datenbankinterface lässt sich da oft nicht mehr performant machen.

Genaue Geschwindigkeitsdaten wirst du selbst rausfinden müssen, ich kann dir leider nur mit der Theorie helfen.
Gewinner der 6. und der 68. BlitzCodeCompo

biggicekey

BeitragFr, Sep 20, 2013 7:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe auch die Erfahrung gemacht, dass so etwas mit http / php auf einem Webspace wie 1&1 gerne mal sehr unterschiedlich schnell / langsam läuft. Besonders bei vielen Anfragen hintereinander.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

TimBo

BeitragSa, Sep 21, 2013 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
kann man da nicht mit sockets arbeiten, um einen Stream aufrechtzuerhalten ?
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Midimaster

BeitragSo, Sep 22, 2013 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
das war ja genau meine Eingangsfrage. Während der Weg über sockets via php auf Xampp erfolgreich funktioniert, scheitert das ganze auf meiner 1&1 Website.

dort läuft das php-script schon gar nicht an:

Zitat:
midimaster.de
Fatal error: Call to undefined function socket_create() in /homepages/14/d672xxx/htdocs/xxx/server.php on line 14


Ein dezitierte Server ist mir zu teuer und ich muss dann auch wieder viel neues lernen.

Ein Server zuhause hat ja auch seine Tücken (z.B. 24/7 oder niedrige Upstreamrate oder wechselnde IPv4.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Starwar

BeitragSo, Sep 22, 2013 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuell untersützt dein Paket keine PHP-Sockets.
Das solltest du einfach nachprüfen können:
Code: [AUSKLAPPEN]

<?php
phpinfo();
?>

Es gibt einige Webspaceanbieter, die Sockets erlauben, etwa bplaced.
Wenn du dir zuhause einen eigenen kleinen Server aufstellen willst (z.B. einen Raspberry Pi) kannst du (sofern dein Router es untersützt) dynamische DNS verwenden um das Problem der wechselnden IP-Adresse zu umgehen.

TimBo

BeitragMo, Sep 23, 2013 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ich meine bei 1&1 musste ein Kumpel, als wir ein Projekt gehostet haben einen bestimmten Wert ändern, der angibt, wie lange ein Stream aufrechterhalten werden soll. Kann ihn ja mal fragen, wenn ich ihn mal wieder erreiche.
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Midimaster

BeitragDi, Sep 24, 2013 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@Starwar
bplaced erlaubt zwar das verbinden mittels sockets. Aber scheinbar nur zu einem Server hin.

Was ich suche geht, so wie ich es verstanden habe, einen Schritt weiter und benötigt die Erlaubnis einen Socket-Server einzurichten.

Oder denke ich hier "falsch"?


@TimBo
das interessiert ich sehr! War es denn was mit einem aktiven spiele-server, der auf dem 1&1 lief?


aktueller Stand:
derzeit läuft das Ganze so, dass der User ein php-Script anstößt. Dieses läd dann ein file von der Platte und trägt dort die zu kommunizierenden Daten an den anderen User ein. Als Antwort sendet es zurück, was der andere User bis dahin an Kommunikation angeliefert hatte.

Die Zeiten nach wie vor traumhaft:

Ich frage alle 300msec. Die Verarbeitung dauert 5msec. Das Zurücksenden 10msec (localhost). Die Datenmenge liegt so zwischen 30-300 Byte pro Zugriff.

Einziges Problem ist natürlich das File selbst. Es könnte ja in der Zeit zwischen dem Öffnen und Zurückschreiben von einem http-Zugriff eines anderen Users verändert worden sein. Dann würde das Zurückschreiben diesen vorherigen Vorgang überschreiben. Kam auch schon vor....

Für weitere Ideen bin ich immer noch offen....
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

DAK

BeitragDi, Sep 24, 2013 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@Midimaster:
Um zu schauen, ob diese Zeiten auch unter Last halten, probier doch mal mehrere tausend Zugriffe pro Sekunde auf das System (wenn geht, von mehreren Internetanschlüssen aus).

Falls du eine Datenbank (SQL oder so) verwendest, füll die auch davor noch mit ein paar tausend Datensätzen je (Daten aus einer fast leeren Datenbank abrufen geht deutlich schneller, als wenn die Datenbank randvoll ist).
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group