Foros del Web » Programando para Internet » PHP »

Dejar de trabajar exec

Estas en el tema de Dejar de trabajar exec en el foro de PHP en Foros del Web. Estimados, estoy haciendo un programa super básico: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php exec ( 'start.bat' ) ; ?> El bat lo siguiente: @import ...
  #1 (permalink)  
Antiguo 08/11/2016, 12:41
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 965
Antigüedad: 7 años
Puntos: 110
Dejar de trabajar exec

Estimados, estoy haciendo un programa super básico:

Código PHP:
Ver original
  1. <?php
  2. exec('start.bat');
  3. ?>

El bat lo siguiente:

Código BASH:
Ver original
  1. @echo off
  2. cd dir
  3. start programa
  4. exit

Todo entorno a un localhost.

Todo ok, el problema está en que php queda trabajando hasta que el programa termine, ¿Solución para eso?

Gracias


Última edición por alvaro_trewhela; 08/11/2016 a las 13:22
  #2 (permalink)  
Antiguo 08/11/2016, 13:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 15 años, 10 meses
Puntos: 154
Respuesta: Dejar de trabajar exec

Hola alvaro_trewhela,

No sé si habrás probado así y tampoco tengo claro que funcione aunque la lógica me dice que debería funcionar:

Código PHP:
Ver original
  1. <?php
  2. exec('start.bat');
  3. ?>

Ya que, una vez ejecutado con exec, puedes terminar el programa PHP y el bat se ejecutará por su cuenta, eso creo.

Espero que te sirva.
  #3 (permalink)  
Antiguo 08/11/2016, 13:47
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 965
Antigüedad: 7 años
Puntos: 110
Respuesta: Dejar de trabajar exec

sip he probado mucho:

hasta este punto:
Código PHP:
Ver original
  1. <?php
  2. exec('start.bat');
  3. ?>

incluso traté con:

Código PHP:
Ver original
  1. ini_set("max_execution_time", 1);

y nada...

No sé si será algo nativo de php y esa función

  #4 (permalink)  
Antiguo 08/11/2016, 16:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 6 meses
Puntos: 2534
Respuesta: Dejar de trabajar exec

Si quieres que dicho proceso se quede ejecutando: no debes dispararlo mediante la interfaz cgi de php, eso está mal y deberías sentirte mal por eso.

Un proceso que tiende a durar indefinidamente debes invocarlo mediante la interfaz cli.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 08/11/2016, 18:03
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 965
Antigüedad: 7 años
Puntos: 110
Respuesta: Dejar de trabajar exec

Gracias por tu respuesta, me puedes ayudar un poco con esto no es muy complejo pero no tengo conocimiento de lo que me expones, porfavor.

Última edición por alvaro_trewhela; 08/11/2016 a las 18:09
  #6 (permalink)  
Antiguo 08/11/2016, 18:59
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Dejar de trabajar exec

Hola se me ocurre que puedes hacer algo como esto (No tengo idea si funcionará):

Código PHP:
Ver original
  1. <?php
  2. exec('start.bat &');
  3. ?>

Por otro lado lo que dice pateketrueke es algo que por ejemplo:

1) Tu interfaz web escriba en un archivo algo "start" (o cualquier otra cosa o no se)
2) Desde tu sistema (cron en linux o task schedule en windows) corran un script php (algo como /ruta/al/interprete/php /ruta/a/tu/script.php y este lea el mismo archivo que la interfaz web pero en este caso si encuentra la palabra "start" que haga lo que tenga que hacer y se tome el tiempo que se tenga que tomar (al termnar dejaría en blaco el archivo (disculpar lo arcaico del ejemplo pero no se me ocurrió otra manera rápida)

Saludos.

Etiquetas: dejar, exec
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 23:47.