Archief - PHP: HL1 & HL2 servers uitlezen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Fraggie

Legacy Member
Hallo,

ik ben bezig met een PHP script die een UDP/TCP connectie maakt met een game server, en vervolgens rcon commands op uitvoert en de resultaten verwerkt. Het systeem in het kort:

Connectie openen
PHP:
 if ($socket = fsockopen("tcp://".$serverArray["ip"], $serverArray["port"], $errno, $errstr, 5)) {
..

Volgens de informatie die ik gekregen heb van de HLSW crew, moet ik mezelf eerst "bekend maken" en vervolgens mag ik (telkens met een uniek ID) data zenden naar de server.

Hallo mijnheer de server
PHP:
stream_set_timeout($socket, 5);
fwrite($socket, $packetAuth, strlen($packetAuth)); // We maken ons bekend
Vervolgens heb ik een script over genomen die de server blijft lezen tot er echt niets meer overblijft (soms gebeurd het dat de 1ste char "x00" is). Dit deel van het script werkt voor de volle 100%, zowel op mijn PC als op de server waar hij gehost wordt.

PHP:
fclose($socket); // We hebben alle info, dus mag de connectie nu al toe, ipv op het einde van het script..

Nu is het echter dat wanneer ik mijn script op de server zet, hij zowel de UDP als TCP connectie kan openen (controle via echo's). De data "packen" is net het zelfde als offline, maar door 1 of andere reden wil hij bij elke TCP connectie de data niet lezen die hij terug krijgt?!

Er gebeurd dus gewoon niets..

Ik heb echter geen idee hoe dat komt, online is de PHP versie misschien iets ouder 5.2.(x-1) en ik draai 5.2.x. Verder hebben we al bijna alle settings van php.ini gelijk gezet en gecontroleerd of er niets mis was met de firewall settings ofzo.

Ook kan ik niet zo maar testen, ik moet telkens een admin er bij halen, waardoor ik liever veel in 1x probeer dan elk uur een nieuwe update door mailen.

Iemand die toevallig een tip heeft?

PS: Soms doet scant hij wel een HL2 server, maar dit gebeurd rondom naar mijn weten..

Fraggie

Legacy Member
1) Ik heb de tijden hoger gezet naar 10s ipv 5s, maar het effect blijft het zelfde.
2) Socket timeout op 30s & de andere weg gedaan:

Fatal error: Maximum execution time of 60 seconds exceeded in blablabla.php on line 108

Dit gebeurd bij de eerste TCP connectie, nadat hij 3 UDP's heeft gedaan.

*Op mijn PC duurt het mss 20s voor het script gedaan heeft.

killgore

Legacy Member
uw tcp connectie zal ergens op vastlopen. Dnno op wat juist, kan te beperkt bandbreedte zijn, beperkt zendvenster, vanalles eigenlijk :x.

Fraggie

Legacy Member
Zou een andere taal een optie zijn, of ligt het gewoon aan de server? Ik dacht dat ASP meer voor connectie's met servers was.. Het is trouwens een Windows server :sop:

dJeez

Legacy Member
Welke firewall heb je getest? Toch niet enkel de Windows firewall op de server? Zo ja, zou ik toch eerst eens bij je hosting provider checken of ze al dan niet filteren op hun routers... Of draait alles op 1 en dezelfde machine? Of zijn het verschillende machines bij dezelfde provider? Test desnoods eens met een ander tooltje of dat wel werkt (ik heb geen ervaring met die rcon toestanden maar kan mij toch wel voorstellen dat daar al tools voor moeten bestaan). Als andere tools ook niet werken lijkt het mij eerder een probleem op de server dan een probleem met je script...

killgore

Legacy Member
Fraggie zei:
Zou een andere taal een optie zijn, of ligt het gewoon aan de server? Ik dacht dat ASP meer voor connectie's met servers was.. Het is trouwens een Windows server :sop:

ik gok de server, zoals jij het beschrijft is het blijkbaar de tcp die misloopt.

btw, waar stopt je script time out? Bij de fsockopen of bij een andere instructie (regel 108 dus)?

Ook rekening houden dat niet alle php zaken perfect werken onder windows (hoewel ik met sockets niet direct problemen had vroeger buiten traagheid).

Fraggie

Legacy Member
killgore zei:
btw, waar stopt je script time out? Bij de fsockopen of bij een andere instructie (regel 108 dus)?
Regel 108 was een begin van een while lus die de gegevens bleef lezen tot er niets meer terug kwam van de server. Dit leek me een veilige while, gezien er duidelijk in de HL2 protocol staat dat er een "einde char" wordt verzonden. Plus het is TCP, dus.......... :unsure:. Blijkbaar sluit mijn PC die connectie rapper af dan de server (of iets in die aard). Ik heb nu de pogingen gelimiteerd tot 3 en nu werkt het grotendeels.

Ik kan terug verder doen met testen. Merci voor de snelle reacties :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan