Jag har en process som jag vill att ett php-skript startar igång och låter köras i bakgrunden, utan att skriptet väntar på processen att avsluta. Processen kan ta allt från milisekunder till timmar att köras så skriptet kan inte vänta på att processen ska avsluta. Vad jag kan hitta på Google och se.php.net så kör man enligt följande:
exec("/usr/local/bin/foobar argument > /dev/null 2>&1 &");
Men även om jag gör så här så väntar skriptet på att processen ska avsluta. Har även provat utan 2>&1 (förmodar att det är för att undertrycka varningsmeddelanden?). Har även provat:
exec("daemon /usr/local/bin/foobar argument > /dev/null 2>&1");
men då händer inget alls istället. Alltså sidan genereras men det finns ingen process som körs i bakgrunden. Jag tänkte att det kanske blev en child som dör när php-skriptet är färdigt så jag provade lägga in lite delay i php-skriptet efter att jag har forkat men jag ser ändå ingen process köras.
Har sneglat mot pcntl_fork() men php körs som modul till apache och då verkar det tyvärr inte gå att använda den funktionen.
Hur gör man egentligen? Jag har börjat tänka i banor att exekvera ett perl-skript som fork:ar processen istället (förutsatt att perl klarar av att lägga processen i bakgrunden).
Hilf, bitte achtung!