PHP PHP|Tomcat|ANT|shexec : Echtzeitausgabe von exec Commands

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
565
Hallo,

ich habe hier einen Tomcat mit PHP 5.3 am laufen, der wiederum per exec->ANT->sshexec mit diversen Servern arbeitet.

Hintergrund: ich versuche ein Interface für unsere Anwendungen zu programmieren.
Aufruf einzelner Ant Befehle, Kommunikation mit anderen Server untereinander funktioniert problemlos.

Ich möchte nun aber eine Echtzeitausgabe realisieren.
ANT gibt da zb einen Output in Form von:

Code:
Buildfile: /home/bcontroller/tomcat/webapps/ROOT/build.xml 

start: 
[sshexec] Connecting to server:port
[sshexec] cmd : sh tomcat/bin/start 
[sshexec] Using CATALINA_BASE: /home/acc-1/tomcat 
[sshexec] Using CATALINA_HOME: /opt/tomcat 
[sshexec] Using CATALINA_TMPDIR: /home/acc-1/tomcat/temp 
[sshexec] Using JRE_HOME: /opt/java 
[sshexec] Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar 

BUILD SUCCESSFUL 
Total time: 1 second

In diesem Falle mit 1 second noch recht schnell.

Es gibt aber auch Befehle die 3-5 Minuten im sshexec hängen.

Im Moment läuft PHP da in einen timeout ...
Hat da jemand vielleicht einen Ansatz für mich?
 
Die Ausgabe nochmal separat in eine Datei / Datenbank schreiben lassen und diese dann abfragen lassen?
 
Soetwas mache ich ja aktuell schon:

Code:
exec("ant -Dhost=server -Dusername=user -Dpassword=pw -DtomcatHome=tomcat stop >> output.txt");

Nur muss ich warten bis exec fertig ist ... also nicht in echtzeit/zur laufzeit ...
 
Und wenn du den Part mit dem lahmen Exec in ne separate Datei auslagerst und asynchron aufrufst, z.B. per AJAX?
 
Du könntest auf Betriebssystemebene ein kleines Shell-Skript schreiben, welches die Ausführung in den Hintergrund verlagert und sofort zurückkehrt.
 
Daaron schrieb:
Und wenn du den Part mit dem lahmen Exec in ne separate Datei auslagerst und asynchron aufrufst, z.B. per AJAX?

Genau da liegt mein Problem das ich von AJAX/jquery 0 Ahnung habe :(

In der Websuche finde ich auch keine kleinen codeschnipsel mit denen man arbeiten könnte ...
 
ich noch mal,

ich hab nun ein wenig mit ajax rumgespielt und habe zu mindest das aufrufen und ausgeben hinbekommen.
den schritt "auslagern" jedoch noch nicht.

in was auslagern? shell script? lässt sich ein shell script analog einem php script mittels ajax aufrufen?
 
Zurück
Oben