[PHP]Aplicatie starten EN stoppen via website, kan het wel?

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de beschikking tot een windows2000prof server die co-located is.
Op die server draait apache met sql, nu is dit een vrij zware server en ik wil er ook 1 of 2 game servers oplaten draaien.

Nu wil ik echter de games remote kunnen starten EN stoppen als iemand dat wil, echter ik wil geen toegang geven tot de server zelf aan anderen.

Nu heb ik getracht via een PHP script de server te starten, dit werkt maar niet zoals ik gewenst had.

Met het comando exec(start c:\bla bla gamecommando); wordt dus inderdaad de server gestart en deze werkt dus ook.
Maar dan heb ik 3 problemen.

1. Zodra ik om de "start link" klik in het php script wordt het proces gestart, maar het script blijft "hangen" en er gebeurd niks meer, alle opvolgende regels worden niet meer uitgevoerd. Ik klan bv geen bevestigings pagina laten zien met: Server gestart.

2. Hoe krijg ik deze applicatie nu GESTOPT ? Stel ik wil de game stoppen, ik wil dan eigenlijk een "stop link" waar men op kan klikken waarmee de draaiende server gestopt wordt.

3. Hoe kan ik controleren als ik op de "start link" klik dat het script eerst controleert of bv de server al niet draait en deze eerst stopt.

Zoals ik al zei ik kan dus met PHP de server inderdaad met het exec() commando starten maar dit geeft niet het gewenste resultaat.
Heeft iemand nuttige tips hoe ik dit kan oplossen of is PHP niet de oplossing voor dit probleem?

ps
Zowel de website als de "games" staan op dezelfde machine.

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 07:15
Zou je misschien een programma als VNC kunnen gebruiken? Moet je het IP van je bak weten en je kunt er een wachtwoord opzetten. Dan kun je via het internet de machine helemaal besturen (muis & toetsenbord & beeld).
Ik denk dat dat het makkelijkste is (helemaal met een snelle internetverbinding)

Verbouwing


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals ik al zei ik wil ANDEREN, want anderen moeten de game kunnen starten en stoppen GEEN toegang geven tot mijn server.

De website start en stop functie is dus niet voor mijn gebruik, zelf kan ik inderdaad al via VNC en PCa inloggen.

Ik wil gewoon dat je remote de server kunt starten en kunt stoppen, met een Linux machine is dit geen enkel probleem echter met Windows kan ik niks vinden wat dit doet voor mij.

Ik dacht dus om via PHP een login te maken met paswoord en daar gewoon een start en stop button te maken met daar achter het commando de aplicatie te starten en te stoppen.
op deze manier heeft de gebruiker zelf geen toegang tot de server maar kan toch de game starten en stoppen(als het werkt).

[ Voor 9% gewijzigd door Verwijderd op 29-06-2003 21:53 ]


Acties:
  • 0 Henk 'm!

  • eborn
  • Registratie: April 2000
  • Laatst online: 18-09 19:03
Hoe start en stop je normaal gesproken de server(s) dan onder Windows?

Acties:
  • 0 Henk 'm!

Verwijderd

Voor punt 1
Note: If you start a program using this function and want to leave it running in the background, you have to make sure that the output of that program is redirected to a file or some other output stream or else PHP will hang until the execution of the program ends.
Dus zorg ervoor dat je een .bat scriptje start waarin je de server start, en tevens output naar een .txt file schrijft, zodat je php file niet blijft hangen.

[ Voor 26% gewijzigd door Verwijderd op 29-06-2003 21:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Door een commando lijn.
voorbeeld:
C:\game\ucc server DM?mapnaam ini=mijn.ini log= mijn.log ip=123.456.789 -nohomedir

Dit is bv zo'n commando lijn, die doe je gewoon in START--UITVOEREN ingeven en je server start, of je maakt een snelkoppeling met die lijn en je dubbelklikt erop.
Stoppen: heel simpel, je klikt op het kruisje van de game console die zich na het ingeven van de commandolijn opent.

Maargoed de mensen die hem aan/uit moeten zetten mogen absoluut GEEN directe toegang hebben tot de machine zelf. Zoals ik al zei, met Linux is dit absoluut geen probleem maar ik heb dus geen idee hoe ik dit werkend voor elkaar kan krijgen in windows.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 18-09 20:50
[quote]Verwijderd schreef op 29 June 2003 @ 21:43:
foobar
quote]

@1: Dat klopt want PHP wacht op output van je programma wat je hebt gestart en aangezien dat programma niets terug stuurt blijft PHP wachten tot dat ie een ons weegt. Misschien kun je het programma in een batch file aanroepen die wel wat terug stuurt?

@2: Geen idee hoe die game die je runt variabelen van buitenaf verwerkt.

@3: Weet ik zo 1,2,3 niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 29 June 2003 @ 21:55:
Voor punt 1

[...]

Dus zorg ervoor dat je een .bat scriptje start waarin je de server start, en tevens output naar een .txt file schrijft, zodat je php file niet blijft hangen.
Ik heb dat al geprobeert met een bat file, maar dat werkt dus niet, start ik de bat file zelf op de server werkt de game, wordt deze echter gestart via PHP zie je in de taskmanager alleen de CMD.exe draaien, de game wordt dus NIET gestart.
Met dat uotput is dus ook een probleem, zoals ik al zei stopt het script volledig na de exec en schrijft dus ook geen txt file meer.

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Je moet een functie hebben die het PID van de gestartte game-server achterhaald. En daarna kill je dat proces. Ik denk dat dat het makkelijkste gaat in een klein vbscriptje.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • eborn
  • Registratie: April 2000
  • Laatst online: 18-09 19:03
Het feit dat de server in een console venster blijft draaien geeft dus al aan dat hij de controle niet teruggeeft aan Windows. Het gaat dus nooit werken, omdat je niet meer terugkomt in PHP voordat de server gestopt wordt.

Een oplossing is misschien een Windows versie van het programma screen (als zoiets uberhaubt bestaat). Je moet het zo zien: als je vanuit een command venster de server aanroept moet je direct terugkomen op de prompt. Zoniet, dan gaat het niet werken.

Iets anders: is het niet mogelijk om de server als service te draaien?

[ Voor 8% gewijzigd door eborn op 29-06-2003 22:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Jawel, dan moet hij zin UT(2003) servers onder Firedaemon laten draaien,
dan heeft hij ze als service

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 17-09 19:09

LauPro

Prof Mierenneuke®

Ik denk overigens dat het laten werken als service het veiligst is. Ik ben net even aan het zoeken geweest naar mijn methode en het kan dus wel alleen er is een zeker risico dat het verkeerde proces wordt afgesloten. En straks sluit 'ie perongelijk je RPC-service af ;).

Je kon bat bestanden toch iets 'terug' laten geven? Dat heb ik wel is gezien, anders zou je dat game via een bat-bestand kunnen laten opstarten en dan return een 1 ofzo.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • satyriasis
  • Registratie: Januari 2000
  • Nu online
ik weet het niet zeker maar je kan altijd nog shell_exec proberen. http://nl2.php.net/manual/en/function.shell-exec.php

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 07:32
Je kunt via bijvoorbeeld SSH toegang krijgen tot een windows server. Ook met Perl zijn dit soort dingen vrij eenvoudig te doen. PHP is eigenlijk niet echt bedoeld om te rommelen met andere programma's.

Acties:
  • 0 Henk 'm!

Verwijderd

je kunt in vb ook een programmatje schrijven wat het spel start en dan weer afsluit.
vb blijft er namelijk niet op hangen als je iets start met shell()

Acties:
  • 0 Henk 'm!

  • sirdupre
  • Registratie: Maart 2002
  • Laatst online: 27-04 09:36
je kunt ook een soort tussen programma schrijven in een andere taal, daar een exe van maken en php dat ding laten aanroepen, ik denk dat je dan makkelijker deze problemen kunt omzeilen dan met puur php.....

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Als service moet het lukken. Dan kun je met de commando's 'net start servicenaam' en 'net stop servicenaam' de service stoppen/starten :)
Pagina: 1