Google innerhalb der PHP Doku dochmal nach "exec" "execv" und "fork". Das
sind zwar C stdlib Aufrufe, aber oft sind diese in PHP nachgebildet.
Zumindest sollte man mit diesen Schlüsselwörtern die entsprechenden PHP
calls finden.

Ausserdem: Das Aufrufen eines shellskriptes durch einen Webserver ist
möglicherweise ein grosses Sicherheitsloch. Am Besten ist eine genaue
Prüfung der übergebenen Parameter. Mindestens muss die Seite durch
https/Basic Authentication geschützt werden.

Am 26. Februar 2009 09:02 schrieb <[email protected]>:

> Hallo LUG,
>
> bitte nicht steinigen, aber ich habe da mal einige Fragen zu
> Shell-Skripten und PHP. Wem die Abkürzung PHP stört, kann vermutlich
> auch Phyton oder Ruby einsetzen ;-). Nun aber los:
>
> Die Idee ist folgende: Einer Menge User soll ein Web-Interface zur
> Verfügung gestellt werden. Dieses Interface beinhaltet eine Liste von
> Shell-Scripten, die aufgerufen werden können (klick auf grünem Pfeil).
> Es sollen Start- und Endzeit, ob das Programm läuft, ob es auf stdout
> bzw stderr was geschrieben hat angezeigt werden sowie die Möglichkeit
> des Abbruchs (klick auf rotes Kreuz) geben. Die Shell-Skripte sollen
> im Hintergrund gestartet werden.
>
> Was funktioniert: Starten des Programmes, abbrechen des Programmes,
> Startzeit des Programmes.
>
> Was nicht funktioniert: Das Programm im Hintergrund starten.
> Ich starte das Skript per
>
> $command = 'cd ' . $programmpfad . ' && ' . 'nohup ./' . $programmname
>               . ' > ' . $logFile . ' 2> ' . $errorFile . ' & echo $!';
>
> Auf der Shell sieht es ungefähr so aus:
>
> cd /mein/pfad/zum/programm && nohup ./programmname > run.log 2>
> error.lug & echo $!
>
> Damit hätte ich auch die PID, über die ich kill ausführen kann. Nun
> wartet aber trotzdem PHP bis das Programm im Hintergrund fertig ist
> mit werkeln. Irgendwo ist das ja logisch, aber nicht gewünscht. Hat
> jemand eine Idee? Also PHP soll das Skript starten und mir mitteilen:
> Läuft. Das Skript soll werkeln. Wenn ich die PHP-Seite aktualisiere
> soll mir irgendwann angezeigt werden: Läuft nicht mehr, erfolgreich
> beendet oder Fehler (möglich über die Logfiles).
>
> Was auch nicht funktioniert: Zeitmessung
>
> Ich will wissen, wie lange das Programm im HG werkelte. Nutze ich
> time, bekomme ich die PID von time (war auch interessant
> herauszufinden, dass es einmal time als eigenständiges Programm und
> einmal time als Bash-Befehl gibt). Hat jemand eine Idee wie ich ohne
> time die Laufzeit bekomme?
>
> Natürlich bin ich auch für ganz andere Ideen offen.
>
> Vielen Dank für eure Mithilfe,
>
> Falk
>
>
>
> _______________________________________________
> Lug-dd maillist  -  [email protected]
> https://ssl.schlittermann.de/mailman/listinfo/lug-dd
>



-- 
"Frauen sind wie Juwelen. Man muss sie mit Fassung tragen" Heinz Erhardt
_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an