phpbar.de logo

Mailinglisten-Archive

[PHP] exec() sytem() star... _(at)_ Mathias

[PHP] exec() sytem() star... _(at)_ Mathias

Gloss Mathias php_(at)_phpcenter.de
Tue, 21 May 2002 17:57:39 +0200


Hiho,

> Von: 	Alexander Saupe[SMTP:a.saupe_(at)_epvtec.de]
>
> From: "Gloss Mathias" <Mathias.Gloss_(at)_start.de>
> > Das Problem hierbei ist, daß man aus PHP raus nicht einfach Subprozesse
> > starten kann, die den Tod des Parents überleben. Wir hatten mal was
> gemacht,
> > wo über PHP ein Programm im Hintergrund gestartet werden sollte, und das
> > ging nur, wenn man ein anderes Programm dazwischen geschaltet hatte...
> > leider hab ich das Shellscript, das wir gebastelt haben, nicht hier auf
> der
> > Arbeit,
> um die Zeit...?
>
klar ;)

> > aber ich kann mal heute abend danach schauen. Auf jeden Fall gings nicht
> > ohne ein vorgeschaltetes Script / Programm.
>
> Danke Mathias, das hier hab ich auch noch gefunden und derjenige schreibt,
> dass der Prozess weiterläuft, selbst wenn einer den Browser schließt
> (steht
> im vorletzten Abschnitt):
> For those who want to execute a .php script to run in the background, from
> a
> .php web page...
>
> exec("php script.php parameters 2>dev/null >&- <&-
> >/dev/null &");
>
hm das könnte sein. Der Trick war, daß man komplett alle Ausgaben des
Scripts
und alle Eingaben abhängt. Wobei mir das nich so klar ist was der gute Mann
da
macht weil

> Where...
> - php is the path to your php script executer (php has to be specifically
> complied to be to do this)
> - script.php is the script
> - parameters are none or more parameters
> - 2>dev/null redirects the stderr to a file
> - <&- switches off the stdin
> - >&- switches off the stdout
> - >dev/null redirects all other output to the file dev/null
> - & direct script to run in background
>
Entweder schiebt er die Standard-Ausgabe mit > /dev/null  ins Nirwana,
ODER er schaltet sie mit >&- ab ... naja ich würds mal an deiner Stelle
so probieren:

Auf der shell sollte dir    which mldonkey     sagen, wo das gute Stück
genau liegt.... z.B. in    /home/gloss/mldonkey

dann sollet es so gehen:
exec('/home/gloss/mldonkey >/tmp/mldonkey.log 2>/dev/null < &- &');

Damit werden die Fehler (STDERR) ins Nirwana (/dev/null) entsorgt,
die Ausgabe von mldonkey nach /tmp/mldonkey.log geschrieben
(wenn die woanders hinsoll, muß der Webserverprozess Schreibrechte
für das Directory haben, wo die Datei hinsoll!), und die Eingabe wird
mit &- abgehängt und das ganze in den Hintergrund geschubst &

Gugg ma, was damit passiert :)

Grüße, Mathias


php::bar PHP Wiki   -   Listenarchive