Foros del Web » Programando para Internet » PHP »

Ejecutar un archivo

Estas en el tema de Ejecutar un archivo en el foro de PHP en Foros del Web. Hola, necesito ejecutar un archivo desde un script PHP, pero quiero que lo ejecute y el script no se quede "esperando" a que finalice, por ...
  #1 (permalink)  
Antiguo 16/07/2007, 21:00
Avatar de marcolandia  
Fecha de Ingreso: febrero-2007
Ubicación: En mi hermosa nación Arge
Mensajes: 107
Antigüedad: 17 años, 2 meses
Puntos: 2
Ejecutar un archivo

Hola, necesito ejecutar un archivo desde un script PHP, pero quiero que lo ejecute y el script no se quede "esperando" a que finalice, por ejemplo:
Código PHP:
system(c:prueba1.exe)
system(c:prueba2.exe)
system(c:prueba3.exe)
system(c:prueba4.exe
cuando se ejecute prueba1.exe, el script se queda "esperando" a que finalice para ejecutar prueba2.exe. Yo quiero que lo ejecute y no espere nada, que siga con las demás líneas.
Ya probé con system(), exec(), shell_exec() y no pude con pcntl_exec() porque creo que en Windows no se puede usar (o hize algo mal yo)

Si alguno conoce alguna función... le doy las gracias! y si no existe tal función creo que voy a tener que crear un bat que llame a los ejecutables o un vbs....
saludos
  #2 (permalink)  
Antiguo 17/07/2007, 08:20
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: Ejecutar un archivo

Cita:
Iniciado por marcolandia Ver Mensaje
Hola, necesito ejecutar un archivo desde un script PHP, pero quiero que lo ejecute y el script no se quede "esperando" a que finalice, por ejemplo:
Código PHP:
system(c:prueba1.exe)
system(c:prueba2.exe)
system(c:prueba3.exe)
system(c:prueba4.exe
cuando se ejecute prueba1.exe, el script se queda "esperando" a que finalice para ejecutar prueba2.exe. Yo quiero que lo ejecute y no espere nada, que siga con las demás líneas.
Ya probé con system(), exec(), shell_exec() y no pude con pcntl_exec() porque creo que en Windows no se puede usar (o hize algo mal yo)

Si alguno conoce alguna función... le doy las gracias! y si no existe tal función creo que voy a tener que crear un bat que llame a los ejecutables o un vbs....
saludos
Lo que estas necesitando es programar con hilos (Threads) y PHP no los tiene lamentablemente. Se me ocurre lo siguiente pero no sé si funcionara, pero si estas con un servidor GNU/Linux puedes probar de ejecutarlo en segundo plano por ejemplo:
Código PHP:
exec("tu_programa &"); 
El & del final le dice a la shell de GNU/Linux que lo ejecute en segundo plano, pero no se si estoy diciendo una burrada porque no creo que esas ordenes pases por la shell de GNU/Linux.

Ahora que me doy cuenta estas en Win porque tenes ".exe", pero la solución que se te ocurrió de hacer un bat no creo que funcione ya que PHP esperara que termine la ejecución de este y el bat esperara la ejecución de cada ejecutable, por lo cual terminas con el mismo resultado.

Busca información sobre hilos en PHP aunque dudo que encuentres algo.

Saludos y suerte.
  #3 (permalink)  
Antiguo 17/07/2007, 08:52
Avatar de marcolandia  
Fecha de Ingreso: febrero-2007
Ubicación: En mi hermosa nación Arge
Mensajes: 107
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Ejecutar un archivo

Ya lo solucioné haciendo que el script php cree un VBS que ejecute los ejecutables :)
gracias por la info
  #4 (permalink)  
Antiguo 17/07/2007, 09:55
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: Ejecutar un archivo

Cita:
Iniciado por marcolandia Ver Mensaje
Ya lo solucioné haciendo que el script php cree un VBS que ejecute los ejecutables :)
gracias por la info
Buenísimo, me alegro que lo hayas solucionado, pero puedes compartir tu solución con la comunidad así si otro usuario llega a este hilo no se encuentre sin respuesta?.

Saludos.
  #5 (permalink)  
Antiguo 17/07/2007, 11:57
Avatar de marcolandia  
Fecha de Ingreso: febrero-2007
Ubicación: En mi hermosa nación Arge
Mensajes: 107
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Ejecutar un archivo

Cita:
Iniciado por DarioDario Ver Mensaje
Buenísimo, me alegro que lo hayas solucionado, pero puedes compartir tu solución con la comunidad así si otro usuario llega a este hilo no se encuentre sin respuesta?.

Saludos.
Bueno, ok, no posteo el code porque no tendría nada que ver con el tema de este post...
Suponiendo que queremos ejecutar el archivo "cool.exe" (que está en el mismo directorio que el script PHP), pero no queremos que php espere a que finalice la ejecución del mismo, podemos crear un script en Visual Basic Script (esto es válido en Windows... ya que otros sistemas operativos no tienen un intérprete de vbs... por defecto...)
Código PHP:
<?
if(!$archivo=fopen("ejecutador.vbs","w")){
echo 
"Error al abrir el archivo";}//si hay error al abrir hablamos
else{

//si abrimos el archivo sin error, escribimos los comandos en el .vbs
fputs($archivo,'Dim co
Set co = CreateObject("WScript.Shell")
co.Run "cool.exe"'
);

//cerramos el archivo
fclose($archivo);

//ahora ejecutamos el archivo que creamos
exec("ejecutador.vbs");//ahora ejecutamos el archivo que creamos
}
?>
Con este code el script en PHP solo va a esperar a que finalice el vbs y no el ejecutable :D
cualquier correción o duda o lo que sea díganlo
  #6 (permalink)  
Antiguo 17/07/2007, 12:29
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: Ejecutar un archivo

Cita:
Iniciado por marcolandia Ver Mensaje
Con este code el script en PHP solo va a esperar a que finalice el vbs y no el ejecutable :D
cualquier correción o duda o lo que sea díganlo
Esta bien, esto es exactamente lo que comentaba más arriba, pero te hago una consulta porque no conozco, en VBS cuando mandas a ejecutar algo no espera a que finalice? Porque si fuera así de nada sirve el código porque PHP espera solo al script VBS y este espera las 3 ejecuciones.

Saludos.
  #7 (permalink)  
Antiguo 18/07/2007, 09:00
Avatar de marcolandia  
Fecha de Ingreso: febrero-2007
Ubicación: En mi hermosa nación Arge
Mensajes: 107
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Ejecutar un archivo

Cita:
Iniciado por DarioDario Ver Mensaje
Esta bien, esto es exactamente lo que comentaba más arriba, pero te hago una consulta porque no conozco, en VBS cuando mandas a ejecutar algo no espera a que finalice? Porque si fuera así de nada sirve el código porque PHP espera solo al script VBS y este espera las 3 ejecuciones.

Saludos.
No, el script en vbs no espera :D
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 20:16.