Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ejecutar cmd en segundo plano con PHP

Estas en el tema de Ejecutar cmd en segundo plano con PHP en el foro de PHP en Foros del Web. Estimados, estoy necesitando correr un cmd que este ejecuta un ETL (El etl lee un archivo grande csv) ya que el ETL puede tardar varios ...
  #1 (permalink)  
Antiguo 28/10/2014, 12:03
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Exclamación Ejecutar cmd en segundo plano con PHP

Estimados, estoy necesitando correr un cmd que este ejecuta un ETL (El etl lee un archivo grande csv) ya que el ETL puede tardar varios minutos, tengo que correr el cmd en segundo plano, para que el usuario pueda seguir navegando en el sistema hasta que termine de ejecutarse.

este es el código que tengo hasta el momento.

Código PHP:
Ver original
  1. # Ruta Kettle
  2. $path = "D:\kettle\pdi-ce-5.1.0.0-752\data-integration\pan.bat";
  3.  
  4. # Archivo Kettle
  5. $file = "C:\\Users\\msuarez\\Desktop\\inserta_table_test.ktr";
  6.  
  7. # Ruta del archivo txt, csv a procesar
  8. $param1 = "file_source=C:\xampp\htdocs\sideyc\files\estructura 1.txt";
  9. $param2 = "destination_table=estructura_test_carga";
  10.  
  11. # Seteo la ruta del bat y el archivo ktr ejemplo paso de parametros //“-param:files.dir=/opt/files” “-param:max.date=2010-06-02″
  12. $exec = $path. ' /file:'.$file.' /level:Basic "/param: '.$param1.' " "/param: '.$param2.' " ';
  13.  
  14. # Ejecución por consola
  15. echo exec($exec);

Alguien sabe como hacerlo?

Gracias de antemano.

Saludos.

Última edición por mauritosuarez; 28/10/2014 a las 12:20
  #2 (permalink)  
Antiguo 28/10/2014, 12:33
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 9 meses
Puntos: 9
Respuesta: Ejecutar cmd en segundo plano con PHP

Prueba con esto:

Código PHP:
Ver original
  1. function execInBackground($cmd) {
  2.     if (substr(php_uname(), 0, 7) == "Windows"){
  3.         pclose(popen("start /B ". $cmd, "r"));  
  4.     }
  5.     else {
  6.         exec($cmd . " > /dev/null &");  
  7.     }
  8. }
  #3 (permalink)  
Antiguo 28/10/2014, 12:37
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Pregunta Respuesta: Ejecutar cmd en segundo plano con PHP

Muchas gracias ccliment por tu respuesta.

Te hago una consulta, el proceso corre en segundo plano solo si es "Windows", si es linux con esta línea
Código PHP:
Ver original
  1. exec($cmd . " > /dev/null &");
basta para correr el proceso en segundo plano ?

Mil gracias.

Saludos.
  #4 (permalink)  
Antiguo 28/10/2014, 12:40
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 9 meses
Puntos: 9
Respuesta: Ejecutar cmd en segundo plano con PHP

Sí, te he puesto la función completa tanto para Windows como para Linux. Si es Linux simplemente con esa línea tienes suficiente:

Código PHP:
Ver original
  1. exec($cmd . " > /dev/null &");
  #5 (permalink)  
Antiguo 28/10/2014, 12:43
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Ejecutar cmd en segundo plano con PHP

Muchas gracias ccliment, me ah servido de mucho.

Saludos.

Etiquetas: Ninguno
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 00:15.