Apache vs. LightHttp: função echo

Na versão em inglês do meu blog recebi um comentário estes dias que me deixou, “boiando”. No artigo sobre RSS onde eu apenas echoava o conteúdo do RSS usando a função “echo” do PHP. O usuário “BrokenToy” relata que teve alguns problemas utilizando a mesma solução no servidor Lighthttp, pois um “lixo” sempre aparecia no final do arquivo, evitando a validação do XML.

Até ai tudo bem, alguma imcompatibilidade estranha que ainda estou para estudar, mas depois ele relata uma forma diferente de jogar o conteudo na tela, usando “php://output”, e relatando que a função echo tinha diferenças de performance.

Fiquei com uma pulga na orelha e hoje pela manha esbarrei em um post que relata o mesmo. Tobias Schlitt relata um um post que entre o Apache e o Lighthttp existe uma diferença, pequena mas impactante, na performance do comando echo. Aparentemente um echo que demore 0.001 no Lighthttp, pode demorar 0.004 no Apache.

Comparação de Performance (Fonte: Tobias Schlitt)

Tobias relata que a única resposta que lhe pareceu válida sobre o assunto é o fato de o Lighthttp usar a memória compatilhada para transferência de dados, e o Apache “alguma outra coisa”. Bem a tese esta sendo discutida em listas de discussão, quem sabe em breve não teremos uma resposta concreta.

Um comentário sobre “Apache vs. LightHttp: função echo

  1. Olá Rafael,

    A diferença está mesmo na forma de compartilhamento de dados.

    O Apache utiliza de Forks /* processos filhos */ para atender novas requisições, enquanto o Lighthttp utiliza Threads!

    Daí você já pode imaginar a diferença entre o compartilhamento de dados no primeiro caso, cada um com seu espaço de endereçamento ; e o segundo compartilhando tudo.

    Você pode fazer a pergunta que eu fiz um dia, mas porque o Apache utiliza Fork? Reposta que cheguei: Segurança/Praticidade! Ou seja, o Apache delega a função de gerenciamento de memória ao SO hospedeiro, daí ele pode se preocupar com outras coisas que não ficar mexendo com faróis, mutexes etc… Evitando que códigos diferentes acessem conteúdos alheios.

    Para se ter uma idéia disto, imagine fazer o gerenciamento de Sessions via Threads …

    É isto aí!

    Abraço

Os comentários estão desativados.