Foros del Web » Programando para Internet » PHP »

Ejecutar comando con exec() como proceso en background

Estas en el tema de Ejecutar comando con exec() como proceso en background en el foro de PHP en Foros del Web. Holas Estoy intentando ejecutar desde una página php un comando, me está funcionando bien pero con un problema, el script no continúa hasta que el ...
  #1 (permalink)  
Antiguo 25/04/2009, 15:56
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Ejecutar comando con exec() como proceso en background

Holas

Estoy intentando ejecutar desde una página php un comando, me está funcionando bien pero con un problema, el script no continúa hasta que el comando no termina de ejecutarse. He probado ya lo siguiente sin éxito (en todos los casos pasa lo mismo):

exec("comando -parametros");
exec("comando -parametros &");
exec("comando -parametros > /dev/null");
exec("comando -parametros > /dev/null &");
exec("comando -parametros & > /dev/null &");

Me estoy dando por vencido, porque al parecer está bien, al menos encontré mucha información al respecto y todos coincidían en hacerlo así, pero no va... Ya no sé si será alguna configuración o qué. Uso php 5.2.X (como CGI) y Apache 2.0.X

Un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 25/04/2009, 17:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ejecutar comando con exec() como proceso en background

Haz probado con 2>&1 ?

Saludos.
  #3 (permalink)  
Antiguo 26/04/2009, 01:51
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Respuesta: Ejecutar comando con exec() como proceso en background

¿Así?

exec("comando -parametros 2>&1");

Hace lo mismo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 26/04/2009, 02:38
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Respuesta: Ejecutar comando con exec() como proceso en background

No hagas caso al mensaje anterior, mi desconocimiento me hizo ponerlo mal... El caso es que ¡¡¡FUNCIONA!!! Así:

exec("comando -parametros > /dev/null 2>&1 &");

Al final como tengo varios comandos que ejecutar y aquí sí deben ser secuenciales, debe ejecutarse uno cuando termine el anterior, he creado un script .sh con esa lista de comandos (sin los & ni nada) y desde el exec() llamo al script así:

exec("sh /ruta/script.sh > /dev/null 2>&1 &");

Y efectivamente la ejecución del PHP termina inmediatamente, pero se activa el proceso en background que completa en 1 minuto aprox.

Por curiosidad, me gustaría saber qué hace eso exactamente

¡¡¡Muchísimas gracias!!!
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #5 (permalink)  
Antiguo 26/04/2009, 10:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ejecutar comando con exec() como proceso en background

Hola ferny,

Revisa esto: http://www.xaprb.com/blog/2006/06/06...vnull-21-mean/, En corto, lo que indica es que tanto la salida del comando (STDOUT) como la salida de errores (STDERR) deben de ir a /dev/null (o a ningún lado).

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:50.