PHP: Java applicatie starten en de output live weergeven

Status
Niet open voor verdere reacties.

Maximvdw

Gebruiker
Lid geworden
7 feb 2009
Berichten
921
Hallo,
Ik wil een Java applicatie (bukkit server voor minecraft) starten in een php script
het commando is
'java -Xms1024M -Xmx1024M -jar craftbukkit.jar -o true'
Het moet werken op Windows, als ik cmd open en deze command ingeef, dan werkt dit
Maar ik wil het in php.

shell_exec kan ik denk ik niet gebruiken omdat ik de output live wil weergeven (blijft constant aan)
dus dacht ik aan proc_open
Maar nu krijg ik met proc_open de foutmelding dat java geen external command is (alsook cmd.exe en andere)

Hoe zou ik dit kunnen oplossen :S
ps: Ik gebruik Wamp

gr,
Maxim
 
Ik weet bijna zeker dat dat niet kan, je zou wel je server kunnen bedienen met plugins als websend of rtoolkit.
 
Niet om je af te kraken, maar dit kan 100% zeker wel , kijk maar naar web based panels
als Multicraft, mcmyadmin die volledig in php zijn.
Mijn vraag is enkel 'Hoe'. Ik weet dat proc_open werkt, maar hij wil de java command niet uitvoeren

gr,
maxim
 
beantwoord je nu jezelf?
waarom post je iets als je het antwoord al weet?
 
:P lees je eigenlijk de vraag wel :D

"shell_exec kan ik denk ik niet gebruiken omdat ik de output live wil weergeven (blijft constant aan)
dus dacht ik aan proc_open
Maar nu krijg ik met proc_open de foutmelding dat java geen external command is (alsook cmd.exe en andere)
"
 
Dus je kan nu al minecraft server starten in PHP maar je wilt de output ook zien?

In dat geval kan je toch in php de server.log van de minecraft server uitprinten.
 
ik snap niet wat je nu wilt...
installeer die plugins, dat werkt, of bedoel je iets totaal anders?
 
ik snap niet wat je nu wilt...
installeer die plugins, dat werkt, of bedoel je iets totaal anders?

Laten we effe totaal stellen dat dit niet om minecraft gaat:
1) Ik wil een webpanel in php maken
2) In dat webpanel moet een process gestart worden java (maakt niet uit welke applicatie)
3) De output van die applicatie moet (eventueel via AJAX) direct worden getoont op de webpanel
4) Alsof je dus console in je php hebt

Ik weet dat dit al veel gelukt is met het gebruik van proc_open, maar deze geeft als output in men webpanel: "ERR: 'Java' is not a valid external command"
Als ik 'Java' in command prompt ingeef, geeft dit geen error, dus het ligt aan proc_open (php)
Shell_exec werkt het commando wel, maar deze methode kan enkel de output geven als de PID al gestopt is.

Uiteindelijk is het wel voor minecraft, maar plugins gebruiken is niet mogelijk ,aangezien de console alles moet geven wat er gebeurt voor het laden van de plugin
ook moet het de errors geven als hij niet kan laden.
Voorbeeld: www.multicraft.org

gr,
Maxim
 
Laatst bewerkt:
ik zou als ik jou was websend op rtoolkit gebruiken, zoals ik zei, dat is veel makkelijker!
 
Mcfreak,.. Het spijt me maar aan zo een antwoord heb ik echt niets. Mijn webpanel en vraag heeft totaal niets met jou oplossing te maken. Gelieve eerst even in te lichten over webpanels. Deze moeten blijven werken zelfs als je server af staat/niet opstart.
 
dan denk ik dat het praktisch onmogelijk is, als het al mogelijk is zou ik het afraden wegens veiligheidsrisico's
 
Sorry, maar dan beweer je dat
www.mcmyadmin.com
www.multicraft.org
die op 1000'de servers en zelfs hosting sites worden gebruikt niet kan?
Aub. ik zoek een php antwoord, en geen minecraft antwoord/plugin.
Bovendien beschik ik over de mogelijkheden om het te doen. MAar mijn enigste probleem is dat proc_open geen extere commands kan vinden
"Kennis gaat boven Uitvoer" laat mij maar beslissen of het een veiligheidsprobleem is, ik wil enkel kennis om mijn probleemstelling te kunnen oplossen

EDIT: Ik weet zeker dat jouw antwoord zal werken, maar het voldoet niet aan mijn eisen, daarbij gaat het me nu enkel om de kennis om dit te kunnen oplossen

gr,
Maxim
 
Laatst bewerkt:
Als je gebruik zou maken van linux zou je het met deze commands kunnen doen.

start server:
screen -dmS <name> java -Xms768M -Xmx768M -jar minecraft_server.jar nogui

Stop server:
screen -S <name> -p 0 -X eval 'stuff "stop"\015'

Server output:
tail ../server.log -n <aantal regels>

Heb het heel even getest op mijn linux box en dit werkt met PHP shell_exec function. Alleen werden de server files aangemaakt in web root dus moet je er nog voor zorgen dat de screen session in de goede folder staat.

Als je ook java errors wilt zien en niet alleen de output die minecraft geeft moet je de output uit screen halen.

http://unix.stackexchange.com/questions/12601/how-to-get-the-output-inside-screen-out-to-a-script

Weet dat windows een eis is maar zou toch even kijken naar de linux optie.
 
Ik heb dit ook geprobeerd te doen, het lijkt mij niet mogelijk, je zou inderdaad verder moeten kijken naar AJAX bijvoorbeeld. En daarmee je log (als je die niet krijg moet je die even aanmaken via nohup bijvoorbeeld, op Windows weet ik het niet.) weergeven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan