[Cascavel-pm] Por falar em modperl...
Ednardo Lobo
ednardo em elobo.cjb.net
Sexta Março 28 11:37:43 CST 2003
On Fri, Mar 28, 2003 at 01:57:50PM -0300, Luis Campos de Carvalho wrote:
> ----- Original Message -----
> From: "Luciano Greiner" <lup em terra.com.br>
> Sent: Friday, March 28, 2003 1:00 PM
>
>
> > Oi pessoal...
> >
> > estou ouvindo ModPerl na lista, então lembrei de uma dúvida que eu
> > tenho. Estou fazendo um webserverzinho de brincadeira aqui e quero
> > adicionar suporte a Perl nele. Porém eu acho a solução de disparar
> > um interpretador Perl para cada CGI invocado no servidor a maneira
> > mais burra de fazer isso, e tenho certeza que o ModPerl não faz isso
> > assim. Vocês sabem mais ou menos como funciona?
>
> O Mod_Perl é um Handler do Apache que roda um interpretador Perl.
> Funciona mais ou menos como todas as outras extensões do Apache:
> carrega na inicialização, tem várias instâncias e recebe / processa /
> devolve requisições de um dos 13 tipos (é esse o número?) de Handlers
> que compõem a cadeia de processamento de requisições do Apache. O fato
> de uma instância ModPerl ficar direto online pode complicar a
> vida de quem pensa de maneira "stateless": você se esquece de
> limpar variáveis, e acaba com respostas estranhas depois da primeira
> requisição.
>
Nos últimos meses tenho programado um grande sistema WEB, com perl,
em cima de um Apache com mod_perl. O ganho de desempenho é bastante
satisfatório e da ordem de 200% a 4000%. Recomendo bastante o uso do
mod-perl em detrimento ao mod_cgi. Porém, nem todos os scripts perl que
rodam em mod-cgi irão rodar em mod_perl. Regra geral, se você usa 'use
strict' e seu script é interpretado sem reportar erros com '-w', ele irá
funcionar em mod_perl. É preciso, entretanto, ter muita atenção com
variáveis globais e ser uma pouco mais cuidadoso durante a programação.
Eu tive um estranho probleminha com o mod_perl, que ainda não
consegui solucionar:
Não sei por que razão, quando o trecho de código abaixo é
executado via `mod_perl', no Apache, o resultado é diferente do
esperado:
my $linha = <STDIN>;
print "$linha\n";
Isso deveria imprimir a primeira linha apenas, mas quando
executado via mod_perl, todas as linhas são impressas. Alguém já
se deparou com isso?
Além do ganho de desempenho, ainda não consegui explorar nenhuma
outra vantagem que o mod_perl possa oferecer em relação ao mod_cgi. Se
alguém utiliza algum recurso obscuro do mod_perl, gostaria muito de
trocar idéias.
> Acho que você pode aprender bastante no website do ModPerl:
>
> http://perl.apache.org/
>
> > Existe alguma maneira de explorar concorrência aqui? Usar um
> > interpretador para vários scripts usando threads... ? O que vcs
> > indicam?
>
> Você pode se aproveitar da menor carga de trabalho gerada pelo
> processamento de scripts dentro do ModPerl, que não precisa carregar o
> interpretador perl em cada nova execução. Também vai sentir alguma
> diferença com o uso de cache de scripts pré-compilados, desde que siga
> algumas pequenas restrições para construí-los. Leia a documentação
> para saber mais sobre isso.
>
> Quando a usar threads, acho mais complicado... o ModPerl usa
> processos, sobe alguns interpretadores para servir requisições e
> processa cada requisição sequencialmente, exatamente como o Apache
> faz.
>
> Ainda assim, o ganho de performance é considerável, vale à pena
> conhecer.
>
> Espero que isso o estimule.
> --
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Luis Campos de Carvalho
> Computer Science Student
> OCP DBA Oracle & Unix Sys Admin
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
--
Ednardo Lobo - www.elobo.cjb.net
Por favor, evitem enviar anexos no formato MS-Office, obrigado!
Veja: http://www.fsf.org/philosophy/no-word-attachments.pt.html
--
Your lucky number is 3552664958674928. Watch for it everywhere.
Mais detalhes sobre a lista de discussão Cascavel-pm