2011-08-28 10 views
5

sto usando php in apache su CentOS. ho bisogno di servire gli utenti, che possono eliminare i file di grandi dimensioni facendo clic. cercando di usare shell_exec. ma non viene eseguito in background. esegue e fa aspettare l'utente.shell_exec non viene eseguito in background, altre soluzioni?

mio comando:

$ D_command = "rm -rf video/'$ mdelete'";

shell_exec ($ D_command);

grazie!

risposta

4

ass & alla fine del comando.

$D_command="nohup rm -rf videos/'$Mdelete' > /log/deletedfile.log 2>&1 &"; 
+0

è possibile aggiungere nohup se lo si desidera all'inizio. "nohup rm -rf videos/'$ Mdelete' &" –

+0

Devi aggiungere nohup, altrimenti il ​​processo si genera come apache e non thread. –

+0

Provato. fa ancora aspettare l'utente ... – user692601

0

provare a eseguire

rm -rf videos/'$Mdelete' & 

utilizzando exec. La e commerciale indica correre al fondo

+0

nohup deve essere aggiunto all'inizio del comando. Questo dice all'interprete php di eseguire il processo in background. Invece di restituire l'output del comando, restituisce l'id di processo –

+0

Provato. fa ancora aspettare l'utente ... – user692601

+0

@ user692601 hai provato a usare 'exec' o' shell_exec'? –

0

Prova questo:

popen($D_command, 'r') 
0

So che questo è piuttosto una vecchia questione, ma ho avuto lo stesso problema, e questo era il solo soluzione funzionante dopo aver provato e fallito con exec, shell_exec, process_open:

$process = popen("nohup $D_command > /dev/null 2> /dev/null & echo $!", 'r'); 
$pid = fread($process, 32); 
Problemi correlati