PHP gestarteter prozess lässt sich nicht beenden!
bearbeitet von Sven RautenbergMoin!
> ich habe das problem das ich ein prozess folgendermaßen starte und nichtmehr beendet bekomme!!
Prozesse, die von PHP mit `proc_open()` gestartet werden, werden in einem Prozess von `sh` gewrappt. Die PID, die du abfragst, ist die Shell, nicht der eigentliche Prozess. Deswegen killst du auch nur diese Shell, nicht den Prozess.
Das ganze ist in https://bugs.php.net/bug.php?id=39992 etwas genauer aufgedröselt, und definitiv auch mit PHP 5.6 noch immer ein Problem.
Symfony hat eine Wrapper-Klasse für derartige Prozesse, und damit auch ein Problem. Deswegen gibts auf Github dazu dieses "issue": https://github.com/symfony/symfony/issues/5759
Der "Fix" ist, das Kommando mit vorangestelltem "exec" auszuführen. Das vermeidet anscheinend die Wrapper-Shell, die abfragbare PID ist dann die vom tatsächlichen Prozess, und der lässt sich dann auch auf normalem Weg beenden.
> $cmd = "sudo python /var/www/test.py &> /dev/null &";
$cmd = "exec sudo python /var/www/test.py &> /dev/null &";
Ich bin mir unsicher wegen sudo, würde auch "sudo exec" in Erwägung ziehen, wenn nötig. Oder am besten ganz auf sudo verzichten. :)
Grüße
Sven