[Cascavel-pm] webcrawler usando Socket

Nilson Santos Figueiredo Junior acid06 em gmail.com
Terça Outubro 18 10:47:45 PDT 2005


On 10/18/05, Alceu R. de Freitas Jr. <glasswalk3r em yahoo.com.br> wrote:
> Eu até concordo com você, mas não sei se isso é
> possível. Para ter uma idéia do que estou falando, dê
> uma lida aqui:
> http://www.squid-cache.org/Doc/FAQ/FAQ-15.html. O
> próprio Squid executa os redirecionadores e esses
> ficam esperando para receber uma URL. É possível fazer
> o Squid executar apenas uma cópia do redirecionador,
> mas não sei o que aconteceria quando ele recebesse uma
> segunda requisição enquanto o redirecionador está
> trabalhando.

Na verdade eu acho que você não leu direito o link que colocou.
Ou então eu não estou entendendo o seu problema.

Os redirectors no Squid são processos que são chamados para fazer
coisas como, por exemplo, quando você está usando sua conexão de banda
larga ou quando você usa conexão discada pelo iG e você ainda não
tiver autenticado com seu login e senha, qualquer endereço que tenta
entrar, ocorre um redirecionamento para a página de login. Ou então
para um administrador de uma rede bloquear alguns sites e redirecionar
para uma página qualquer, como uma indicando que o acesso foi negado.
Os redirectors recebem os endereços na STDIN e devem reescrever os
endereços na STDOUT, redirecionados ou não.

Talvez você esteja fazendo um redirector escrito em Perl que pega o
conteúdo do site antes para verificar o que fazer (bloquear ou não,
talvez) mas aí o correto seria você ter redirectors "dummy" que
simplesmente se comunicaria (por sockets ou outra forma de IPC) com um
daemon que cuidaria de fazer a busca propriamente dita. Em outras
palavras, só mudou de lugar aonde aquilo deveria ser feito.

Criar um processo para cada conexão é algo extremamente ineficiente
para qualquer linguagem que necessite carregar uma máquina virtual
(mesmo uma tão enxuta como a do Perl). Só é algo viável pra programas
feitos em C. Ou então para casos onde o número de usuários será
pequeno e/ou recursos de hardware não são um problema.

Para você ver como isso é inviável, só o interpretador sem fazer nada
consome algo entre 2MB e 3MB de memória. Pra 1000 usuários simultâneos
você teria um consumo  2GB a 3GB de memória pra um "Hello World". ;-)

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm