2011-08-28 26 views
5

estoy usando php en apache en CentOS. necesito servir a los usuarios, que pueden eliminar archivos grandes haciendo clic. tratando de usar shell_exec. pero no se ejecuta en segundo plano. se ejecuta y hace que el usuario espere.shell_exec no se ejecuta en segundo plano, ¿alguna otra solución?

mi mando:

$ D_command = "rm -rf vídeos/'$ mdelete'";

shell_exec ($ D_command);

gracias!

Respuesta

4

culo & al final del comando.

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

puede agregar nohup si lo desea al principio. "nohup rm -rf videos/'$ Mdelete' &" –

+0

Tiene que agregar nohup; de lo contrario, el proceso se genera como apache y no se enhebra. –

+0

Lo intenté. todavía hace que el usuario espere ... – user692601

0

intente ejecutar

rm -rf videos/'$Mdelete' & 

usando exec. El signo indica que correr al fondo

+0

nohup tiene que ser agregado al comienzo del comando. Esto le dice al intérprete php que ejecute el proceso en segundo plano. En lugar de devolver la salida del comando, devuelve el id. De proceso –

+0

Probándolo. todavía hace que el usuario espere ... – user692601

+0

@ user692601 ¿intentó usar 'exec' o' shell_exec'? –

0

Prueba esto:

popen($D_command, 'r') 
0

Sé que esto es absolutamente una cuestión de edad, pero no tenía el mismo problema, y ​​este fue el única solución de trabajo después de intentar y fallar con exec, shell_exec, process_open:

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