• Publicidad

Bucle while en cgi

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Bucle while en cgi

Notapor jjoor » 2012-05-28 17:49 @784

Hola a todos:
Tengo un script que entrena un reconocedor de patrones y luego mediante un bucle while() lo aplica al texto que le llega por la entrada estándar. El entrenamiento tarda minutos pero el reconocimiento es instantáneo.

Quería poner esto en un cgi, pero cada vez que le mando datos con un formulario me realiza el entrenamiento, ¿cómo podría evitarlo?

Jorge.
jjoor
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-05-28 16:35 @733

Publicidad

Re: Bucle while en cgi

Notapor explorer » 2012-05-28 18:20 @805

Bienvenido a los foros de Perl en Español, jjoor.

Puedes sustituir la parte del entrenamiento por una serie de instrucciones que carguen los datos del entrenamiento, ya hecho antes, desde el disco. Así, al CGI solo le queda ir luego a la parte de reconocimiento.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Bucle while en cgi

Notapor jjoor » 2012-05-29 07:06 @337

Muchas gracias por la rápida respuesta.

Efectivamente, puedo restaurar el modelo entrenado del disco, pero aun así tarda mucho: el modelo pesa muchísimo. ¿Cómo podría hacer para restaurarlo una única vez y que luego estuviera disponible a sucesivas llamadas desde un formulario?

Jorge.
jjoor
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-05-28 16:35 @733

Re: Bucle while en cgi

Notapor explorer » 2012-05-29 11:22 @515

La solución es usar Perl persistente (aunque está sin actualizar desde el 2004), mod_perl2 (un poco complicado de programar, y necesitas acceso al servidor), y FastCGI (este es el más asequible).

Lo que hacen estas soluciones es arrancar una vez el CGI y dejarlo persistente en memoria, por lo que la siguiente petición no tendrá la penalización de la lectura. Pero, cuidado, porque cada solución requiere una programación cuidadosa, según las peculiaridades de cada una. Quiero decir que cada uno tiene una forma de hacer que los datos queden persistentes.

Puedes leerte estos dos hilos
Aunque la forma más fácil para empezar es usando un envoltorio que abrevie el esfuerzo de implantación: CGI::Fast (que necesitará, a su vez, al módulo FCGI (FastCGI)).

En uno de los hilos se comenta que una solución primera es la de meter la información del modelo en la sección __DATA__ del CGI. Así, la carga del modelo es al mismo tiempo que la del CGI.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Bucle while en cgi

Notapor jjoor » 2012-05-29 18:07 @796

Fenomenal, CGI::Fast es justo lo que necesitaba.
Muchas gracias.
Jorge
jjoor
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2012-05-28 16:35 @733


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados