[SP-pm] dbmopen

Luis Motta Campos luismottacampos at yahoo.co.uk
Wed Aug 13 13:53:38 PDT 2008


Henrique Rennó wrote:
> Olá Luis,
> 
> Obrigado pela resposta. Realmente, o perl não exibe erros ou warnings
>  e o log de acesso do apache possui os códigos "200 192" depois do 
> nome do script. Você saberia o que seriam esses códigos?

O Apache loga muitas coisas diferentes, dependendo da sua configuração.
Eu posso arriscar que "200" é o código de "sucesso" (HTTP_OK, requisição
bem-sucedida), e, assumindo que você está usando um arquivo de
configuração padrão (e que eu sou bidú para lembrar todas as
configurações sem olhar, o que é no mínimo difícil), "192" é a
quantidade de bytes transmitidos na resposta - o que não é muito.

> O começo do script usa o comando "param" para pegar os valores de 
> usuário e senha passados em caixas tipo edit com as propriedades 
> "name" definidas, as que são passados para o "param" como parâmetro.

O Perl não implementa uma palavra-chave chamada "param". Mas alguns
módulos podem exportar isso como uma subrotina para o teu espaço de
nomes. Entre eles, CGI, um módulo horrível, mas ainda suportado (o Perl
é famoso por ser /backwards/ /compatible/ por muitos anos. Diz a lenda
que os scripts que Cleópatra escreveu nas paredes das pirâmides ainda
rodam sem problemas (mas com muitos /warnings/).

Presumindo que o teu "comando param" seja realmente CGI::param, isso não
está relacionado com o nosso problema.

> Acredito que não seja problema nos arquivos, pois na antiga servidora
>  o script funciona normalmente. Eu fiz a transferência dos arquivos 
> de uma máquina para outra via ftp tanto no modo ascii como binário 
> (acredito que o modo certo seja binário), mas não houve efeito.

Sim, o modo correto é binário.

E as versões do libdbm que você está usando, mudaram? E o engine,
continua o mesmo?

Se você sabe usar o strace e o ldd, pode ser interessate usar estas
ferramentas para saber como está compilado o teu wrapper XS para o DBM.

> Com relação a acessos concorrentes não há problema porque esse banco
>  não é muito acessado. Ele só é acessado para que seja feito um login
>  a uma página onde podem ser baixados dados e esses logins muito 
> dificilmente ocorrerão juntos.

Bom, eu vou assumir que você é grandinho, responsável, e sabe que o que
você tem nas mãos é um erro de projeto grande e que deveria ser
corrigido. :) Não vou voltar a tocar neste assunto, a não ser que você
me peça.

> Acredito que terei que passar o banco para outro padrão, mysql por
> exemplo, a fim de usar na nova servidora. Eu usei o DBM porque não há
> mesmo necessidade de usar outro tipo de banco mais sofisticado e
> porque a utilização do DMB é muito simples.

Você pode tentar o mSQL, que é menor, e pode ser usado a partir de um 
arquivo de dados, como o DBM. Mas é uma base de dados relacional, com 
poucos recursos. É melhor que o MySQL, palavra de DBA.

Eu, se fosse você, pensaria três vezes antes de colocar qualquer projeto 
meu sob MySQL. Você vai arrumar muita dor-de-cabeça. Se você precisar 
mesmo de uma base de dados relacional, eu recomendo usar Postgres.

Putamplexos.
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list