Página 1 de 1

Formulario PHP Ejecutando Perl (print en tiempo real)

NotaPublicado: 2014-11-05 20:18 @887
por TooRDJ
Saludos al foro. En esta ocasión acudo a ustedes para pedir un poco de ayuda en un tema que no logro solucionar :oops:

Tengo un formulario el cual hice en PHP, y ejecuta un Perl pasando los parámetros en una variable de la siguiente forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. $comando = "./config.pl $parametros";
Coloreado en 0.018 segundos, usando GeSHi 1.0.8.4

La ejecución del "config.pl" la hace perfectamente, los parámetros los leo en el documento Perl y los guardo en una variable todo perfecto...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $parametros = $ARGV[0];
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El "config.pl" lo que tiene programado es conectar vía SSH módulo "Net::SSH2;" a un servidor y configurar algunos parámetros, en dicho .pl hay una seria de print que muestra un mensaje según lo que va configurando.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Configuracion de IP.\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El problema que se presenta es que dichos mensaje no se muestran en tiempo real en el navegador, si no cuando ya ha terminado la ejecución del Perl, se muestra de golpe los mensaje print que hay en el "config.pl".

He probado configurando todo en un solo archivo es decir un config.cgi y dentro del mismo el formulario y el "use Net::SSH2;" y demás configuración, sin embargo me pasa lo mismo, el navegador queda cargando y cuando termina de ejecutar ahí sí muestra los mensaje que debería ir mostrando progresivamente según va ejecutando, pero no lo hace...

¿Qué estaría faltando? Agradezco la ayuda...

¡Saludos! :wink:

Re: Formulario PHP Ejecutando Perl (print en tiempo real)

NotaPublicado: 2014-11-06 03:16 @178
por explorer
Coloca

$| = 1;

al principio del programa.

Lo que hace esa línea es hacer que Perl no guarde las salidas en un búfer intermedio, sino que las saque inmediatamente.