DarkSoja: batch Datei um Apache zu restarten

Beitrag lesen

Hello,

Die Datei "prog.exe" ruft nur eine .bat Datei auf, die ich aber irgendwie nicht direkt öffnen konnte (wegen absoluter Pfade...).

Wenn ich diese Datei über den Explorer aufrufe oder die prog.exe manuell starte wird apache auch neugestartet. Doch über das PHP-SCript nicht. Es wird zwar die Meldung in der Bat Dateiausgegeben, dass Apache neugestartet wurde, doch ist der Apache-Dienst im TaskManager hinterher "Beendet" und lässt sich per Rechtsklick->Starten nicht starten. Führe ich die apache_start.bat oder die apache_restart.bat aus, klappt es wieder.

Woran kann das liegen?

Meine Theorie:
Innerhalb der zweiten Shell (die durch prog.exe produziert wird) wird eine weitere Instanz des Apachen gestartet. die in dieselbe Run-Datei schreibt? Wenn die Shell endet, wird vermutlich auch der Apache-Dienst beendet. Die Run-Datei ist jetzt aber auf den zweiten (jetzt nicht mehr laufenden) Apachen umgeschrieben. Der alte Apache ist daher auf diesem Wege nicht mehr erreichbar.

Du benötigst das Objekthandle (bei Linux PID) des Dienstes, den Du beenden willst. Woher Du das unter Windows bekommst, weiß ich nicht. Außerdem hat der Apache i.d.R. einen Parentprocess und viele Childs. Wenn Du nicht den Parent stoppst, nützt Dir das gar nichts.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

Danke für die Antwort.
Ich nutze das XAMPP Paket, da waren halt mehrere batch-Dateien drin.
einmal die Apache_stop.bat und die Apache_start.bat
Diese rufen nur die xampp_cli.exe mit den Befehlen stop apache bzw. start apache auf.
Ein weiterer Befehl ist restart apache. Ich versteh nicht so ganz, warum das Ganze klappt, wenn ich die Datei manuell starte...

Wartet das PHP-Script auf die Rückgabe der prog.exe, welches wiederrum durch auf die Rückgabe der apache_restart.bat wartet?
Da während der Laufzeit apache dann "weg" wäre, ist es verständlich, dass dadurch auch die prog.exe bzw. die apache_restart.bat von apache selbst vorher abgeschossen wird, oder nicht?!?

Hinterher ist apache halt nur beendet, was bedeutet, dass das Script nur "halb" läuft...

Kann man die prog.exe nicht irgendwie starten, ohne dass das php-script auf eine Rückgabe wartet??

Viele Grüße und Hoffnung auf eine Lösung ;)