Foros del Web » Programando para Internet » PHP »

exucutar script php en segundo plano

Estas en el tema de exucutar script php en segundo plano en el foro de PHP en Foros del Web. Hola, quiero ejecutar un script en segundo plano sin que el usuario lo note, intento usar exec para ejecutar el php pero no funciona, uso ...
  #1 (permalink)  
Antiguo 14/04/2016, 04:43
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
exucutar script php en segundo plano

Hola, quiero ejecutar un script en segundo plano sin que el usuario lo note, intento usar exec para ejecutar el php pero no funciona, uso php7.

Código PHP:
Ver original
  1. ini_set('display_errors', '1');
  2. exec('php7 /exec.php > /dev/null &');


en archivo exec.php se encuentra en la raiz del documento que se ejecuta 10 segundos mas tarde y envia un correo.

exec.php
Código PHP:
Ver original
  1. sleep(10);
  2. mail('prueba@example', 'prueba', 'correo de prueba');

cuando llamo al script que tiene la funcion exec no me muestra ningun error pero tampoco me envia el correo, probe de executar el archivo exec.php directamente para ver si envia el correo y si lo envia. que puede ser?
saludos
  #2 (permalink)  
Antiguo 14/04/2016, 04:56
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: exucutar script php en segundo plano

Pasa una variable a la salida del exec para saber que esta pasando.

Código PHP:
Ver original
  1. ini_set('display_errors', '1');
  2. exec('php7 /exec.php > /dev/null &', $output);
  3. var_dump ( $output);
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 14/04/2016, 04:59
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: exucutar script php en segundo plano

Cita:
Iniciado por xerifandtomas Ver Mensaje
Pasa una variable a la salida del exec para saber que esta pasando.

Código PHP:
Ver original
  1. ini_set('display_errors', '1');
  2. exec('php7 /exec.php > /dev/null &', $output);
  3. var_dump ( $output);
Hola, gracias por colaborar, le pase la variable y me mostro array vacio.
array(0) { }

Que puede ser?
  #4 (permalink)  
Antiguo 14/04/2016, 05:05
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: exucutar script php en segundo plano

Habilita el reporte de errores también en exec.php.

Igualmente te has asegurado de que la función Mail funciona?

Prueba a poner un echo o algo en exec.php para comprobar si el coomando se ejecuta o no.
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 14/04/2016, 05:15
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: exucutar script php en segundo plano

Cita:
Iniciado por xerifandtomas Ver Mensaje
Habilita el reporte de errores también en exec.php.

Igualmente te has asegurado de que la función Mail funciona?

Prueba a poner un echo o algo en exec.php para comprobar si el coomando se ejecuta o no.
si me asegure que la funcion mail funciona ejecutandolo directamente, el exec() no me esta llamando a ningun script php probe a poner ruta absoluta y tampoco, quizas tenga que modificar algo en el php.ini aunque si execute un simple:
exec("whoami") funciona.
pero no con los archivos externos, alguna idea?
saludos
  #6 (permalink)  
Antiguo 14/04/2016, 05:47
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: exucutar script php en segundo plano

Prueba asi
Código PHP:
Ver original
  1. ini_set('display_errors', '1');
  2. exec('php7 exec.php', $output);
  3. var_dump ( $output);

No sé si estas en local o si puedes probarlo, Pero has probado a ejecutar el comando de rectamente desde consola?
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 14/04/2016 a las 05:53
  #7 (permalink)  
Antiguo 14/04/2016, 06:26
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: exucutar script php en segundo plano

Hola al final me funciono lo hice asi:

Código PHP:
Ver original
  1. exec('php exec.php > /dev/null &', $output);
  2. var_dump ( $output);

aunque var_dump me mostro un array vacia y en el exec.php saldria mensaje enviado.


bueno tengo otra duda que no se si es posible con exec.
Como podria enviarle variables al script exec.php se me ocurre por get algo asi:
Código PHP:
Ver original
  1. exec('php exec.php?variable1=loquesea', $output);

no se si esto funcionaria pero tampoco me sirve porque le tengo que pasar muchas variables.

Como se hace este tipo de tareas?
saludos
  #8 (permalink)  
Antiguo 14/04/2016, 06:47
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: exucutar script php en segundo plano

Bueno encontre la solucion seria asi:
Código PHP:
Ver original
  1. exec('php exec.php "variable1" "variable2"', $output);
  2. //para recuperarlas
  3. var_dump($argv);

Pero ahora tengo una duda, si el script php externo que quiero ejecutar en segundo plano seria para rellenar un archivo.txt o .log lo que sea como podria hacer para que por ejemplo si un usuaria entra en mi sitio y salta el exec() donde abrira un archivo.txt en segundo plano para insertar informacion pero mientras esta insertando informacion otro usuario hace saltar otra vez el exec() para insertar informacion.

Es decir el exec() estaria trabajando con el mismo archivo entonces no se guardaria bien la informacion, o estoy equivocado?si estoy en lo cierto como solucionais estas tareas?
saludos

Última edición por primary; 14/04/2016 a las 06:53

Etiquetas: plano, segundo
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




La zona horaria es GMT -6. Ahora son las 04:07.