Foros del Web » Programando para Internet » PHP »

Ejecutar programa externo (.exe) con PHP

Estas en el tema de Ejecutar programa externo (.exe) con PHP en el foro de PHP en Foros del Web. Buenos días, estimados foreros. Tengo un problema al que llevo unos días dándole vueltas no tengo alma de sacar, a ver si vuestra sabiduría me ...
  #1 (permalink)  
Antiguo 08/04/2019, 10:07
 
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Ejecutar programa externo (.exe) con PHP

Buenos días, estimados foreros.

Tengo un problema al que llevo unos días dándole vueltas no tengo alma de sacar, a ver si vuestra sabiduría me ilumina un poco el camino.

He realizado una web conectada al programa de gestión de mi empresa para poder tomar referencias, stocks, precios... y quiero integrar los pedidos que se realicen vía web al programa directamente sin que el compañero tenga que crearlos a mano. La integración de pedidos funciona de la siguiente manera:

1º: La web, al realizar con éxito un pedido, genera un archivo de texto con los datos necesarios para crear el pedido en el programa.
2º: Este archivo de texto se sube, mediante protocolo FTP, a un servidor aparte de donde tengo alojada la web.
3º: En dicho servidor hay un listener que revisa cierta carpeta cada X tiempo. Si detecta un archivo nuevo, lanza un programa .exe que integra el pedido en el programa (dicho programa está hecho por uno de los programadores del ERP, así que funcionar funciona).
4º: El archivo del pedido se mueve a otra carpeta de pedidos finalizados (esto lo hace el propio exe).

(¿Lo véis lioso? Yo también, pero no me dejan tocar manualmente las tablas de la base de datos, así que así estamos...)

El tema es que a veces el listener falla y no me integra bien los pedidos. Sé que están hechos porque me llega el correo de confirmación, pero si no meto los pedidos a mano se pueden quedar ahí hasta el día del juicio final, y los siguientes pedidos se siguen quedando colgados hasta que la carpeta objetivo del listener se vacía. Ah, y olvídate de integrar dos pedidos a la vez.

Para evitar problemas con los archivos (como el servidor ese falle, la jodimos, ya ha pasado), me planteo una solución: a día de hoy almaceno en otra base de datos, donde tengo total libertad de uso y abuso, los pedidos a modo de copia de respaldo. Sería genial si yo, al insertar el pedido en la tabla correspondiente, pudiera llamar al exe (obviamente modificado a tal efecto) directamente para no depender del listener en cuestión, que cogiera los datos del registro en cuestión y lo integrara en mi ERP.

Me he documentado y he visto que puedo usar exec() y system(), pero todos los ejemplo que he visto son de ejecutables alojados en el mismo servidor en el que se invoca, y aquí estamos hablando de servidores totalmente distintos. ¿Sigue siendo posible usar exec() o system() aunque sea con algún parámetro adicional, o me olvido de este sistema? (ya que estamos... ¿qué diferencia hay entre ambas funciones? Según veo en la documentación son prácticamente iguales salvo el control de la salida del buffer, y ahí me lío un poco).

Mil perdones por la parrafada, pero creo necesario poner en antecedentes para poder entender mi problema.

¡Un saludo!
  #2 (permalink)  
Antiguo 08/04/2019, 19:56
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Ejecutar programa externo (.exe) con PHP

el problema es el Listener, puede que sea problea de cache del listener, pero eso ya no te incumbe, ya que tu no realizaste o configuraste el Listener, ahora puedes montar un PHP dentro de esa otra web que lanze el PROCESO del EXE, o indicarle al que hizo el Listener, que corrija los fallos, o que se pongan de acuerdo en un protocolo de Intercambio mas Fiable, como un WEBSOCKET, asi sabras en tiempo real si el EXE esta trabajando correctamente, etc
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Etiquetas: exe, externo, funcion, programa, tabla
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 18:12.