Foros del Web » Programando para Internet » PHP »

LLamar a un programa en php.

Estas en el tema de LLamar a un programa en php. en el foro de PHP en Foros del Web. Hola a tod@s. Mi duda es sobre cómo poder llamar desde php a un programa escrito en C para coger el valor de un dato, ...
  #1 (permalink)  
Antiguo 19/04/2006, 12:37
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
Pregunta LLamar a un programa en php.

Hola a tod@s. Mi duda es sobre cómo poder llamar desde php a un programa escrito en C para coger el valor de un dato, e igualmente como puedo mandar un valor a otro programa en C que recibiría ese valor que se manda en php.

Gracias.
  #2 (permalink)  
Antiguo 19/04/2006, 12:43
 
Fecha de Ingreso: abril-2006
Ubicación: Cochabamba, Bolivia
Mensajes: 11
Antigüedad: 18 años
Puntos: 0
Ve la function exec()

php.morva.net/manual/es/function.exec.php
  #3 (permalink)  
Antiguo 19/04/2006, 12:44
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Para ejecutar un comando o programa por consola se usa la funcion system(). El programa ejecutado se ejecuta en el servidor. Si el programa devuelve datos por pantalla dudo que puedas obtenerlos, en cambio, si los escribe en un fichero puedes leer el fichero con php, usando las funciones de ficheros.
Con esta funcion, si el programa acepta parametros por linea de comandos o si lee ficheros para realizar su ejecucion puedes entonces pasarle valores.
Creo que para empezar debes especificar como funcionan esos programas con los que quieres interactuar.
  #4 (permalink)  
Antiguo 19/04/2006, 12:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por claudiovega
Para ejecutar un comando o programa por consola se usa la funcion system(). El programa ejecutado se ejecuta en el servidor. Si el programa devuelve datos por pantalla dudo que puedas obtenerlos, en cambio, si los escribe en un fichero puedes leer el fichero con php, usando las funciones de ficheros.
Con esta funcion, si el programa acepta parametros por linea de comandos o si lee ficheros para realizar su ejecucion puedes entonces pasarle valores.
Creo que para empezar debes especificar como funcionan esos programas con los que quieres interactuar.
Algunas funciones del grupo "system()" y afiens permiten obtener la salida que estos generen para procesarlos .. Cuando hablo de "salida" me refiero a "texto" .. no a una aplicación "gráfica" ni menos que tenga que interactuar con el usuario (botones, menus .. etc).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/04/2006, 12:55
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
Muchas gracias cluster. Entonces, para luego pasar el valor que genero en php a otro programa en C, también deberé de meterlo en un archivo de texto,y después acceder a él desde el programa en C. Puedo ejecutar este último programa desde php para que la ejecución del mismo y la captura del valor se haga de forma automática?
  #6 (permalink)  
Antiguo 19/04/2006, 12:56
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
Muchas gracias claudiovega.
  #7 (permalink)  
Antiguo 19/04/2006, 13:07
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Cita:
Iniciado por Cluster
Algunas funciones del grupo "system()" y afiens permiten obtener la salida que estos generen para procesarlos .. Cuando hablo de "salida" me refiero a "texto" .. no a una aplicación "gráfica" ni menos que tenga que interactuar con el usuario (botones, menus .. etc).

Un saludo,
Claro, si la salida no es muy compleja y tiene un formato definido se puede procesar dich salida del programa.
  #8 (permalink)  
Antiguo 19/04/2006, 13:10
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
La salida sería muy simple, un sólo entero que cogería para sacar ese valor a través del puerto paralelo del pc.
  #9 (permalink)  
Antiguo 19/04/2006, 13:13
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Cita:
Iniciado por luar79
Muchas gracias cluster. Entonces, para luego pasar el valor que genero en php a otro programa en C, también deberé de meterlo en un archivo de texto,y después acceder a él desde el programa en C. Puedo ejecutar este último programa desde php para que la ejecución del mismo y la captura del valor se haga de forma automática?
Si, ambos casos son similares en la llamada desde php.

Ejecutar programa y leer su valor:

Código PHP:
<?php
   
//si el programa saca por pantalla un valor este quedará 
   //guardado en la variables $valor
   
$valor=system("programa");
?>
Llamar a un programa que lea valores generados por php

Código PHP:
<?php
    
//1) si el programa recibe parametros por linea de comando 
    
system("programa valor_param1, valor_param2");

   
//2) si el programa lee ficheros
   
system("programa"); 
?>
  #10 (permalink)  
Antiguo 19/04/2006, 15:55
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años
Puntos: 0
Muchísimas gracias claudio vega.
  #11 (permalink)  
Antiguo 20/04/2006, 04:30
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Cita:
Mi duda es sobre cómo poder llamar desde php a un programa escrito en C para coger el valor de un dato
¿Ese dato del programa en C no lo podrías generar con PHP?

Tu duda pareciera como algún proyecto electrónico en donde te comunicaras con algún puerto con C y quisieras sacar datos por ahí quizá contralando "un led" mediante lo que tú le dices desde una máquina en cualquier toma a internet.

Y viceversa, quizá algún sensor de temperatura (por mencionar cualquier tipo de transductor dinámico en el tiempo) anda por ahí y tú quieres desplegar el valor de la temperatura actual conectándote a cualquier toma a internet.

Si tu proyecto tiene algo que ver con lo que menciono, los datos que vienen del programa en C (y que quizá estés enviando a un archivo) serían dinámicos (ejm. la temperatura siempre cambiaría) y para que pudieras verla en algún monitor que se conecta a internet desde cualquier parte del mundo, entonces quizá te interese usar AJAX para que esa recarga no se note y tu aplicación parezca una auténtica aplicación de escritorio, pero en línea.

Bueno, jajaja, ya hice muchas suposiciones, pero todo era para preguntarte si tu proyecto tiene algo que ver con eso, ya que yo necesito hacer algo algo así p' mi proyecto final y ahí vemos si nos echamos la mano con algo, saludos.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #12 (permalink)  
Antiguo 20/04/2006, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
uamistad

Dentro de las suposiciones que hicistes sobre captura de datos desde un PC cualquiera + su navegador sólo y transmitir esos datos a un "servidor" .. Lo que se suele usar en esos casos más bien no es "Ajax" + algo en "C" instalado en ese PC .. sino eso mismo pero creado como un "ActiveX" o "Applet Java". Todo esto lanzado desde una página HTML (con su incrustración del "objeto" activeX o applet Java que corresponda).

Si ese ActiveX no incorpora la funcionalidad de "sockets" como para enviar esos datos a cierto scritp.php que corra en tal servidor o incluso directamente a una BBDD remota (vía TCP/IP directo .. o un "web service"? .. o equivalente) .. en ese caso tal vez se podría combinar este "activeX" con "Ajax" para enviar a intervalos ese dato a un servidor sin "recarga de página" aparente.

Por ejemplo sería algo tipo:
http://www.virtualserialport.com/pro...niffer-activex
(usé google .. salió una aplicación comercial .. en ese caso, seguro que hay algo por ahí no-comercial donde poder estudiar su código)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 20/04/2006, 06:32
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Hello Mr. Clúster !

Ahh man, más bien la PC en la cuál tomo los datos es la que estoy conviertiendo en servidor.

Mira, hago un gráfico rapidín p' explicarme mejor:



De lo que se trata es de leer variables con el micro, meter esos datos en un TXT que esté cambiando dinámicamente, luego si alguien vía internet (cualquiera de esas 4 PC's que pinté) se conectan al server, deberían poder ver esa info en tiempo SEMI-real, digo SEMI porque no hay necesidad de que vean la info que cambia tan rápido.

Unos 5-10 segundos bastarían para el refresco. Y AJAX permitiría que no se vieran esos "pantallazos" de recarga de página, sólo se actualizaría un DIV y yap.

¿Cómo ves? ¿Suena muy loca la idea? ¿algún 'pero' que pueda tener?

Fíjate que eso de Java no me convence, sé que es "fabuloso" pero yo hace tiempo que me peleo con él, a Java sólo lo quiero en mi celular, jeje. Por eso pongo eso de SEMI-tiempo-real, no creo que haya necesidad de exagerar, ya que sólo son monitores receptivos.

A simple vista yo digo que funciona, ¿no?
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #14 (permalink)  
Antiguo 20/04/2006, 06:38
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Esa opción del "ActiveX" no la había considerado y no es tan abusiva con los recursos como Java, ¿qué ventaja podría tener esa opción con respecto diseño que planteo en el gráfico?

Thanks por la opinión, =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #15 (permalink)  
Antiguo 20/04/2006, 08:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El hecho de usar un ActiveX o Applet Java cambia el "gráfico" que expones .. en ese caso el microcontrolador estaría en los "PC" .. no en el servidor.

Un "ActiveX" tiene el problema también que se ha de instalar en el PC del usuario (previa autorización) y que me acuerde sólo funcionan bajo IE (Internet Explorer) y no sé con qué navegador más funcionan ...

Si el micro-controlador está en el Servidor .. lo ideal es crear una aplicación en un leguaje que pueda acceder a ese tipo de puertos (en C, .. etc) y que lo llames a ejecutar + obtener su resultado con PHP vía system() o si este generar en el servidor un archivo o alimenta una BBDD en general . .simplemente con PHP lees esos datos como para publicarlos en una página web.

Bajo este planteamiento .. usar "Ajax" para leer esa información y presentarla .. sería una buena opción pero realmente ya en ese punto daría igual como gestiones la presentación (si recargas la página .. o lo llamas con "Ajax").

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 20/04/2006, 08:33
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Thanks Clúster. Sí, también había oído yo algo sobre el ActiveX, las autorizaciones y que jalaban en IE.

Cita:
ya en ese punto daría igual como gestiones la presentación (si recargas la página .. o lo llamas con "Ajax").
Jeje, sí, tienes razón, cuando me enganché con ese proyecto no sabía ni qué era AJAX, ahorita como ya aprendí a usarlo tengo la manía de ver en dónde aplicarlo, jaja.

Creo que me está pasando como esos batos que aprenden a hacer algo en photoshop (un efectillo) y destruyen sus webs llenándola de efectos por todos lados que le dan una apariencia asquerosa y pesada.

A ver si no me pasa algo así, jaja. En fin, thanks man.

Ya entendí la parte del ActiveX, que más bien estaría por el lado de los usuarios. Me acuerdo de ese chat en Ajax que probamos el otro día, le voy a echar un ojo p' ver cómo hace lo que hace. Y a leer algo sobre sockets que ahí sí estoy perdido.

Saludos, thanks again !
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #17 (permalink)  
Antiguo 11/10/2006, 22:49
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Ayuda

Hola a todos estube leyendo el post la verdad no entiendo mucho de esto, soy aprendis apenas pero ya con algunas ideas en mente para mi web, quisiera que me dijeran como puedo hacer para desde el cliente ejecutar un programa en el servidor, este no devuelve ningun parametro y es visual lo unico que quiero es ejecutarlo, si alguien me hecha una manito con esto que debo hacer que configuro donde y claro un ejemplo si no es mucho pedir como dije estoy aprendiendo pero me enreda tanta cosa se los agradesco de antemano.
  #18 (permalink)  
Antiguo 12/10/2006, 06:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por jpbad Ver Mensaje
Hola a todos estube leyendo el post la verdad no entiendo mucho de esto, soy aprendis apenas pero ya con algunas ideas en mente para mi web, quisiera que me dijeran como puedo hacer para desde el cliente ejecutar un programa en el servidor, este no devuelve ningun parametro y es visual lo unico que quiero es ejecutarlo, si alguien me hecha una manito con esto que debo hacer que configuro donde y claro un ejemplo si no es mucho pedir como dije estoy aprendiendo pero me enreda tanta cosa se los agradesco de antemano.
mmm En este tema ha quedado bastante claro .. Sólo peudes ejecutar aplicaciones con PHP que se puedan ejecutar por línea de comandos . .nada de entornos visuales ni que requierean iteracción con el usuario.

Todo lo demás lo tienes explicado en la documentación de PHP sobre las funciones exec() .. system() y afines.

Pero, insisto que tienes que tener bien claro que tipo de aplicación quieres ejecutar .. Te invito a que abras un nuevo tema con tu pregunta concreta.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 12/10/2006, 08:25
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
ok gracia, ahora habro nuevo tema...
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:42.