webForumDet fria alternativet

Fork:a process till bakgrunden

5 svar · 495 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#1

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!

tydalMedlem sedan juni 20034 013 inlägg
#2

Jag kör så här:

system("nohup /usr/local/bin/foobar argument > /dev/null &");

och har väl kört så ett år snart utan problem...

GeinMedlem sedan sep. 20005 700 inlägg
#3

Det fungerar inte, sidan står och och tuggar, processen körs (ser jag med top). Om jag dödar processen som körs så fortsätter php-skriptet att generera sidan. Jag är förbryllad...

GeinMedlem sedan sep. 20005 700 inlägg
#4

Eventuellt något skit med det program som exekverar skriptet, det är inte apache utan en annan process. Kör jag skriptet i terminalen så gör den vad jag önskar men när jag exekverar det via webben så går det inte.

GeinMedlem sedan sep. 20005 700 inlägg
#5

tydal,
Hur kör du ditt skript, genom php som apache-modul eller CLI?

tydalMedlem sedan juni 20034 013 inlägg
#6

Apachemodul.

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)