• Publicidad

Demonio y servidor

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Demonio y servidor

Notapor monoswim » 2009-08-25 08:41 @403

Otra opción es usar xinetd... te ahorras muchos dolores de cabeza... ;-)

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Publicidad

Re: Demonio y servidor

Notapor davidferrero » 2009-09-24 02:59 @166

No sé si sabré exponer bien mi problema.

El caso es el siguiente, tengo ya bien el código del servidor.

La instalación del servidor es la siguiente, con un script setup.pl paso todos los scripts necesarios a un directorio de instalación y lanzo pws.pl el cual en teoría es el demonio encargado de lanzar el servidor.

Los problemas que pensé derivados del funcionamiento del demon del servidor no eran de éste por lo no toqué el código del demon.

Ahora me encuentro en una situación que no sé si es correcta o no, ya que el funcionamiento no falla. El caso es el siguiente: ahora yo tengo el proceso padre, y al recibir una petición se lanza el proceso hijo que gestiona todas las peticiones que le vengan.

El caso es que al hacer stop sobre la tarea mata al padre pero no al hijo por lo que queda ejecutándose, y a partir de ahí se generan errores en los procesos de inicio, stop y reinicio de los procesos, lo cuales no son errores en sí sino que no se realizan alguna de esas tareas a la primera o deja algún hijo en ejecución.

Mis dudas son las siguientes:
  1. Es normal que para una petición se genere un hijo, en mi caso, la petición es http bajo un determinado puerto; entonces, cuando desde un navegador la envío el servidor contesta; el caso es que la página tiene refresco automático por lo que envía peticiones cada 5 segundos. Pero no entiendo muy bien cómo al generar peticiones desde distintos puntos lo gestiona con un único hijo. Igual no tiene mucho sentido la pregunta así que con que alabéis mi ignorancia será suficiente castigo.
  2. En el tema 17 de Perl Cookbook explica cómo hacer que un servidor sea demon, es un poco obvia la pregunta pero dentro del bucle final se debería introducir todos los del bucle que gestiona el inicio del servidor o el propio código del servidor.
Última edición por explorer el 2009-09-24 03:53 @204, editado 1 vez en total
Razón: Formatear párrafos. Tildes. Anglicismos.
davidferrero
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-07-29 03:12 @175

Re: Demonio y servidor

Notapor explorer » 2009-09-24 04:10 @215

El proceso de crear hijos es para que cada uno dé servicio a cada cliente, mientras esté abierta la conexión con ellos. El padre está escuchando al puerto, y cada vez que hay una nueva conexión, crea un hijo que la atiende.

En programas más complejos, como el Apache, para evitar los retrasos de la creación de un proceso hijo, lo que se hace es que los hijos se mantienen vivos durante más tiempo, y el padre les desvía las peticiones para que las resuelvan. Si, además, está puesta la opción KeepAlive, será el mismo hijo el que encadene peticiones de un mismo cliente por la misma conexión TCP, por lo que aún se ahorra más tiempo al no tener que crear esa conexión.

Para servidores más sencillos, vale con hacer el clásico servidor padre-hijo, padre escucha, hijo sirve petición, hijo se muere.

Para la segunda pregunta, en el bucle final está el código del servidor, el código que debe ejecutarse mientras exista conexión con el cliente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 0 invitados