• Publicidad

Pasar varibles de CGI a CGI

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Pasar varibles de CGI a CGI

Notapor zozo666 » 2007-08-16 08:13 @384

Hola Perleros, quisiera hacerle una consulta, tengo el siguiente código en un CGI llamado paso2.cgi:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$t->param(( 'css' => $css,
            'js'  => $js,
            'percent_completed' => '<font id="percent">0%</font>',
            'files_uploaded' => '<font id="files">0</font>',
            'data_uploaded'  => '<font id="current">0</font>',
            'data_total'     => $totalKB,
            'time_spent'     => '<font id="time">0</font>',
            'speed'          => '<font id="speed">0</font>',
            'time_left'      => '<font id="left">0</font>',
            'inline'         => $cgi->param('inline') ? 1 : 0,
         ));
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Bueno, lo que necesitaría es alguna forma de pasar la variable $totalKB a un CGI aparte, o sea de este script le envie la información al otro Script, y bueno, este último se encargará de hacer lo que tenga que hacer.

Entonces, ¿cómo establezco una comunicación entre script y script? Muchas Gracias
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Publicidad

Notapor kidd » 2007-08-16 08:15 @385

Hola,

En el sitio hay un tutorial acerca de esto:
http://perlenespanol.com/tutoriales/cgi ... o_get.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor zozo666 » 2007-08-16 09:01 @417

Gracias, pero no es lo que necesito.

Necesitaría en sí una forma en la que el CGI que recibe los datos se ejecute solamente una vez, ya que ya tiene una ejecución que le manda otro archivo, por eso lo que necesitaría es una suerte de VARIABLE GLOBAL que la pueda leer el CGI al que le envío los datos y que también esté en el CGI que la hace. Tengo el siguiente código para ver si sirve:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for (1..3) {
    last if -e $flength_file;
    sleep 1;
}

&DisplayMessage("No File") unless (-e $flength_file); # No temp files => Upload already finished

my ($total,$ftime) = &getTotalSize($flength_file);
my  $totalKB       = int($total/1024);                # Total file size in Kilobytes
$js =~ s/<TMPL_VAR data_total>/$totalKB/e;

if ($c->{template_file} && !-e $c->{template_file}) {
    print "Invalid template filename";
    exit;
}

my $t = HTML::Template->new( filename => "$c->{templates_dir}/$tmpl_file",
                             die_on_bad_params => 0, );
$t->param(( 'css'               => $css,
            'js'                => $js,
            'percent_completed' => '<font id="percent">0%</font>',
            'files_uploaded'    => '<font id="files">0</font>',
            'data_uploaded'     => '<font id="current">0</font>',
            'data_total'        => $totalKB,
            'time_spent'        => '<font id="time">0</font>',
            'speed'             => '<font id="speed">0</font>',
            'time_left'         => '<font id="left">0</font>',
            'inline'            => $cgi->param('inline') ? 1 : 0,
         ));

print $t->output;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Bueno, con esto muestro lo pasos que seguiría el script para armar el $totalKB, el tema ahora es pasar esta variable a otro script que se encarga de varias cosas, entre ellas de escribir una base de datos, por lo tanto, no lo puedo ejecutar dos veces.
zozo666
Perlero nuevo
Perlero nuevo
 
Mensajes: 139
Registrado: 2007-05-26 10:36 @483

Notapor explorer » 2007-08-16 09:53 @453

Pues ejecútalo con un system()...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system('cgi2.pl', $totalKB);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si esperas algún valor devuelto en la salida estándar de cgi2.pl, usa qx().

Y si es la última instrucción del cgi1, puedes hacerlo también con un exec().
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

Notapor kidd » 2007-08-16 12:10 @549

Si cada script está en un servidor diferente, entonces la solución que te mostré es la que deberás de usar, si están en el mismo servidor entonces puedes hacer lo que te dice explorer, de ello también hay un tutorial:
http://perlenespanol.com/tutoriales/fun ... _perl.html

Ahora, quizá tu solución también esté en hacer unos módulos que solamente cargues y que contengan las funciones que quieres.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Perl user » 2007-08-16 12:21 @556

Qué tal,

Si sólo es pasar una simple variable a otro proceso, pues utilizar system() podría ser "conveniente". Sin embargo, para intercambiar información entre procesos eso es poco eficiente (genera un proceso en cada petición) aparte que suena muy "ad-hoc".

Una mejor solución es utilizando algún mecanismo de comunicación entre procesos, en este caso mi recomendación es utilizar "shared memory". Este mecanismo permite compartir una región de memoria entre uno o mas procesos, de manera eficiente podrás pasar cualquier mensaje entre uno o mas procesos.

Échale un ojo al espacio de nombres IPC:: hay varios módulos que destacan para ello.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924


Volver a Intermedio

¿Quién está conectado?

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