Per PHP Programm (re)starten

Lil-rich

Erfahrenes Mitglied
Hallo Leute,

ich hab nen Gameserver. Logisch, dass der dauerhaft läuft, wenn ich ihn starte. Ich mache das folgendermaßen:

(Linux Console)
Code:
screen -A -m -d -S aworld ./start1.sh

Damit wird der im Hintergrund gestartet und läuft auch ohne dass ich das Fenster offen lassen muss.

Nun zur eigentlichen Frage:

Wie kann ich mit einem PHP-Script diesen Screen erstellen ? Ich habs schon mit diesen `` probiert, aber das klappt nicht richtig... Andere Sachen schon, aber halt der Screen-Befehl nicht. Ich hab gedacht, dass er dann evtl auf eine (nicht vorhandene) Ausgabe wartet und hab exec() probiert. Leider will er da auch ne Antwort haben o.O Also wenn ich 2 Befehle nacheinander mache, bleibt er beim ersten hängen und macht erst weiter, wenn ich den 1. Befehl per "kill" abschieße...

Code:
 exec("cd /home/wow/bin && ./start1.sh");
 exec("cd /home/wow/bin && ./start2.sh");

Ich hoffe jemand kann mir helfen... Danke schonmal

P.S.: Ich weiß, dass ist nicht das optimale Forum dafür, aber es geht ja eigentlich darum, wie ich mit PHP diesen Screen erstellen kann ^^ Also kann man sich streiten xD
 
Verwende doch system() wenn du auf keine Ausgabe deiner Shellscripts angewiesen bist. Achte dabei aber auf das Manual und insbesondere folgendem Zitat aus demselben:

Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.
 
Danke ! Genau das war das Problem, die Seite hat ewig weitergeladen ^^

Ich werd das gleich mal probieren ;)
 
*Sry für Doppelpost*

Hmmm hab nun umprobiert aber ich krieg es leider net hin :(( Er lädt zwar nun die Seite ruckizucki, aber der Prozess wird nicht gestartet... Ich hoffe einer weiß wo das Prob liegt:

Code:
  system("cd /home/wow/bin && ./start1.sh >> logonserver.log");
  system("cd /home/wow/bin && ./start2.sh >> antrix.log");
  
  echo "Erfolgreich gestartet !";

Was hab ich falsch gemacht ?
 
Du leitest stdout nicht um. Das geht in dem du Kanal 1 nach Kanal 2 umleitest. Z.B so:

PHP:
system("cd /home/wow/bin && ./start1.sh 2>&1");
 
Ok, danke. Nun startet er den ersten Prozess schonmal :) Nur das Prob ist:
1. Er gibt Text aus (nicht den kompletten, nur einen Teil) und lädt die Seite wieder lang.
2. Wenn ich 2 Prozesse gleichzeitig so starten muss, welche Variable muss ich verändern ? Also welche bestimmt, wohin der Kanal 1 (den ich sehe oder ?) umgeleitet wird ?

Danke schonmal !

€dit: Ok, ich glaub ich hab den Fehler ;)
 
Zuletzt bearbeitet:
Bei mir ist das recht ähnlich. Ich versuche ebenfalls ein Programm per Php zustarten, nur halt für Windows.

Ich versuch jetzt schon seit gestern das ans laufen zu bekommen.

Mein neuer Code:
PHP:
$Meldung = exec("call \"H:\\Der Server\\Revs\\Rev 224\\Programm.exe\"", $RueckgabeProgramm, $RueckgabeStatus);

Problem ist, dass mit call die exe aus dem aktuellen Verzeichnis ausgeführt wird .... nur dann fehlen dem Programm die Config datein und es schließt sich wieder. Was kann ich da machen?

Als Bat Datei würde es so funktionieren

h:
cd Der Server\Revs\Rev 224
call "Programm.exe"

MFG

Hut
 
Dann führe doch mit PHP die .bat aus?
Sollte doch ausreichen oder täusche ich mich gerade?
 
Es ist möglich, doch das Problem ist, ich möchte das aus dem Script heraus machen. Weil wenn ich dieses Public mache, sollen auch User ohne iwelche besonderen Kenntnisse die möglichkeit haben, es durch ein Forumlar oder einer Variable zu ändern.
 
Zurück