Ben, bir unix ortamında php bir cini gibi işlem spawn referans için pid tutmak ve httpd süreçlerine tamamen bağımsız tutmaya çalışıyorum. Bu idari backoffices ikinci katman uygulamaları kontrol etmek için yararlıdır. Ben herhangi bir komut için yeniden genel tutmak istiyorum, ben her komut için bir. Sh yazmak istemiyorum.
() Ben bu komutu koşuyorum php exec kullanarak:
$command = "java /myApp/TestInfiniteLoop";
$log = "/myApp/myLog.txt";
$echos = null;
$fullCommand = "bash -c 'nohup $command < /dev/null > $log 2>&1 & echo $! & exit' & echo $!";
exec($fullCommand, $echos);
$pid = (int)$echos[0] + 2;
O (... ya da hemen öldürür) $ pid verir ama işlem spawn değil.
I bir bash kabuk $ fullCommand çalıştırırsanız mükemmel çalışıyor. Ben bash kapatabilir ve her şey beklendiği gibi çalışmaya devam eder.
I "nohup" alırsan çalışır (ama pid +1 değil +2), ama en kısa sürede durdurmak gibi httpd süreci olsun en çok öldüren ...
O iş yapmak için doğru yolu nedir?
Mümkünse kimse doğrudan pid almak için düzeltebilirsiniz? Ben bash (+2) çağrı ikinci süreç olduğunu varsayarak yaşıyorum, ama bu mümkün (olası değil ama, ben biliyorum ...) aynı olmaz.
PS: Ben Mac ve Linux ortamlarında üzerinde test ettik.