Alternativa correcta (socket daemon)
Aldrin Martoq
amartoq en dcc.uchile.cl
Jue Ene 22 15:09:37 CLST 2009
On Thu, 2009-01-22 at 12:31 -0300, Hector Salinas wrote:
> Hace un mes que tengo leyendo sobre la programacion al socket
> y sobre deamon En linux. Resulta que realice un aplicaci贸n (o
> peque帽o script) que escucha en el puerto 5000 (socket) Y esta
> corriendo como demonio (la aplicaci贸n eschucha desde un tornique. 茅l
> envia el codigo pdf147 a la aplicacion, la aplicaci贸n Consulta al
> DBMS(mysql). si exite el persona devuelve una "A" al torniquete para
> activarlo, de lo contrario La persona no entra). Hasta este punto
> todo Bien
Bien, se ve facil.
> El drama que tengo es el siguiente(o no se sin tan drama). La
> aplicaci贸n la realice con PHP-Cli (era lo que mas tenia a mano Ya que
> si no se hacia un aplicaci贸n rapidamente, se implentaba con la que
> venia con el torniquete y esta esta hecha en VB 6 :( ) por
> alguna extra帽a razon el script deja defunciona como demonio y tengo
> que volve a ejecutar para que continue escuchando al
> torniquete y eso me tiene loco (y llego a la conclusion De que
> php-cli no me sirve).
Puedes agregar tu script PHP en /etc/inetd.conf y lo programas como si
lee/escribe desde la entrada estandar. Ejemplo en BASH:
amartoq en videopodcast:~$ tail -1 /etc/inetd.conf
9876 stream tcp nowait nobody /home/amartoq/ej.sh
amartoq en videopodcast:~$ cat /home/amartoq/ej.sh
#!/bin/bash
echo -n "Bienvenido.. su nombre? "
read NOMBRE
echo "HOLA $NOMBRE"
amartoq en videopodcast:~$ telnet localhost 9876
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Bienvenido.. su nombre? Aldrin
HOLA Aldrin
Connection closed by foreign host.
> El OS que esta corriendo es CentOS 5.2 (como me gusta esta distro) al dia
> Las preguntas son
> 1.- 驴 la ca/&卢鈧瑍#路 en hacerlo en php-cli?
No necesariamente...
> 2.- 驴 que lenguaje tendria que usar para este tipo de uso (c, java, python o algun otro que desconosco) ?
Yo te recomiendo python (es realmente facil y elegante, no te costara
aprender). Lo que tienes que hacer:
1.- escribir una funcion que haga la pega y probarla
2.- embutir la funcion en un servidor socket. Ejemplo:
http://danieldandrada.blogspot.com/2007/09/python-socketserverthreadingtcpserver.html
3.- poner tu programa en /etc/inittab; asi se levanta automaticamente
La diferencia con el ejemplo bash/inetd es que esto sera un poco mas
"performante" y aprenderas python de paso ;)
--
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tama帽o : 197 bytes
Descripci贸n: This is a digitally signed message part
Url : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20090122/eded28f3/attachment.bin
M醩 informaci髇 sobre la lista de distribuci髇 Linux