PHP Script nach exec weiter abarbeiten

Penman

Lieutenant
🎅Rätsel-Elite ’25
Registriert
Feb. 2009
Beiträge
922
Folgendes Problem, dass ich gerade für einen Kumpel erledige:
Er hat einen Windows Server und will über ein Webinterface 5 CSS Server starten können. Dazu hat er Bat Dateien angelegt, die dann mittels exec ausgeführt werden.

Problem ist nur, dass php keine Ausgabe erzeugt solange die Bat Datei auf dem Server noch offen ist. Sprich das Konsolenfenster noch läuft. Nach 60 Sekunden ist dann die Maximum Execution Time überschritten.

Wie kann ich trotz des exec Befehls das Script fortsetzen?
 
indem du das programm schliesst

du kannst eine BAT datei nicht fortsetzen, bevor der letzte befehl nicht komplett abgearbeitet wurde!

BAT ist eine Stapelverarbeitungsdatei
das heisst, sie arbeitet von oben nach unten ab

wenn du z.B. calc.exe aufrufst und danach willst du mspaint.exe aufrufen, musst du erst calc beenden, damit mspaint ausgeführt werden kann
 
Mit den Mittel von PHP unter Windows nein, aber mit der Bat-Datei kannst du das tun.

Les dir mal die Hilfe von START durch (start /?).
Damit kannst du auch aus einer Batch-Datei heraus Binaries aus der Console detachen.

Beispiel: start srcds.exe -game cstrike ..
 
Code:
START ["Titel"] [/D Pfad] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
      [/AFFINITY <Hex.-Affinität>] [/WAIT] [/B] [Befehl/Programm]
      [Parameter]

  "Titel"     Der Titel des neuen Fensters.
  Pfad        Startverzeichnis.
  B           Startet Anwendung, ohne ein neues Fenster zu öffnen. Die
              Anwendung ignoriert STRG+C. Wenn die Anwendung nicht
              selbständig STRG+C überprüft, ist STRG+UNTBR die einzige
              Möglichkeit, um die Anwendung abzubrechen.
  I           Die CMD.EXE beim Aufruf übergebene Umgebung soll die neue
              aktuelle Umgebung sein.
  MIN         Startet das Fenster minimiert.
  MAX         Startet das Fenster maximiert.
  SEPARATE    Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
  SHARED      Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
  LOW         Startet Anwendung in IDLE-Prioritätsklasse.
  NORMAL      Startet Anwendung in der NORMAL-Prioritätsklasse.
  HIGH        Startet Anwendung in der HIGH-Prioritätsklasse.
  REALTIME    Startet Anwendung in der REALTIME-Prioritätsklasse.
  ABOVENORMAL Startet Anwendung in der ABOVENORMAL-Prioritätsklasse.
  BELOWNORMAL Startet Anwendung in der BELOWNORMAL-Prioritätsklasse.
  AFFINITY    Die neue Anwendung verwendet die als hexadezimale Zahl
              angegebene Prozessoraffinitätsmaske.
  WAIT        Startet die Anwendung und wartet auf deren Ende.
  Befehl/Programm
              Wenn ein interner Befehl oder eine Batchdatei verwendet wird,
              wird das neue CMD-Fenster mit Parameter /K gestartet.
              Das bedeutet, dass das Fenster erhalten bleibt, nachdem der
              Befehl ausgeführt wurde.

              Wenn dies nicht der Fall ist, wird das Programm entweder
              als Anwendung in einem Fenster oder als Konsolenanwendung
              gestartet.
  Parameter   Parameter, die an den Befehl oder das Programm übergeben werden
              sollen.

Hinweis: Die Optionen SEPARATE und SHARED werden auf 64-Bit-Plattformen
nicht unterstützt.

Irgendwie steht da nichts bei, was mir von Nutzen sein könnte...

Google hilft mir ausnahmsweise mal auch nicht.
 
Eigentlich hat Gu4rdi4n1337 und IceMatrix alles dazu gesagt
Code:
start programm.exe
exit

Die "programm.exe" wird gestartet und der Batchablauf geht weiter. Das exit schließt das "Batch-Fenster" und PHP sollte fortfahren. Es kommt nur darauf an, das deine Batdatei zuende durchläuft.
 
Code:
@echo off
start D:\HLServer-Sponsored\war\srcds.exe -game cstrike ...
exit
exakt so sieht es bei mir aus. Config einstellungen hab ich mal mit ... abgekürzt
 
Zurück
Oben