dinohills Posted May 4, 2012 Report Share Posted May 4, 2012 (edited) Bom dia, seguinte eu montei 2 funções em php para ler a quantidade de linhas do final de um arquivo txt. Vou usar isso para ficar monitorando em tempo real o log do squid e ver o que o pessoal esta acessando.Bom mas o que vem ao caso é. Eu fiz ela de 2 jeitos uma usando somente php e outra usando o exec com o comando tail do linux.Gostaria de saber qual vocês acham melhor. Ambas estão funcionando perfeitamente.função 1<?php function ultimas_linhas($arquivo, $qtd_linhas) { $arq = file($arquivo); $tot_linha = count($arq) - 1; $ultimas_linhas = $tot_linha - $qtd_linhas; for ($i = $tot_linha; $i > $ultimas_linhas; $i--) { echo $arq[$i]."<br/>"; } } ultimas_linhas('access.log', 50); ?> função 2 <?php function ultimas_linhas2($arquivo,$qtd_linhas){ exec("tail -n $qtd_linhas $arquivo",$saida); for($i=count($saida);$i >= 0;$i--){ echo $saida[$i]."<br/>"; } } ultimas_linhas2('access.log', 50); ?>Qual dessas vocês usariam ? Edited May 4, 2012 by dinohills Quote Link to comment Share on other sites More sharing options...
0 JaguA Posted May 4, 2012 Report Share Posted May 4, 2012 Bem eu usaria a Primeira tendo em vista que é tudo em PHP, então seria o que eu conseguiria fazer.. no seu caso eu te indico a segunda função pois esta com varias linha a menos de código o que ajuda no processamento da função apesar que a diferença é minuscula ... porem é bem visivel que com a função toda em PHP ele tem um trabalho a mais que é ler todo o arquivo conta todas a linhas para chegar ao final o que deve dar algum atraso de resposta o que na função 2 é diferente já que ele trabalha diretamente com o comando do linux, o que seria decerta forma proprio para esse tipo de caso... como não entendo muito ou melhor nada de linux em questões de comandos e etc, eu ficaria com a primeira função por entender 100% do código escrito. Quote Link to comment Share on other sites More sharing options...
0 Churc Posted May 4, 2012 Report Share Posted May 4, 2012 então... eu ficaria com a segunda pelo fato do próprio Linux fazer o gerenciamento...eu trabalhei uns tempos atrás em uma empresa que desenvolvia sistemas de CallCenter... então como o fluxo de ligação era grande, tinha várias telas de monitoramento e muitas usavam tail e outros comandos pra fazer a leitura de logs e tal...porque usando o código PHP, você carrega o arquivo "todo" como um array (na memória) pra fazer a leitura dos 50 últimos registros... o tail -n abre o arquivo a partir da linha especificada e como é externo faz o trabalho de limpar da memória... coisa que o PHP só vai fazer quando você sair da página...minha opinião rsabrs Quote Link to comment Share on other sites More sharing options...
0 dinohills Posted May 4, 2012 Author Report Share Posted May 4, 2012 (edited) Tarde,então estive pensando aqui e acho que vou acaba usando a segunda mesmo.Porque alem do fato de ler somente as ultimas linhas do arquivo sem precisar ler o arquivo todo eu vou usar também egrep e awk para filtrar os ip's caso eu queira monitorar um ip a parte e também com awk eu já pego os campos que me interessa no log.Mas no fim das contas eu vo incrementa as duas. Nunca se sabe quando uma pode ser mais util que a outra né. Edited May 4, 2012 by dinohills Quote Link to comment Share on other sites More sharing options...
0 JaguA Posted May 4, 2012 Report Share Posted May 4, 2012 Pois é Churc, sabendo que a 2 é melhor em desempenho e processamento que a 1 também fico com ela.. .mas como eu disse sabemos que as 2 funciona e paa que serve, mas por questão de conhecimento do que se esta fazendo com certeza ainda seria a Função 1 ... hoje eu sei que se eu der um tail vou abrir o arquivo do log nas ultimas linhas mas se eu tivess que fazer isso ontem com certeza cabaria saindo a primeira função asuhshauhsua.mesmo assim achei muito interessante já tinha visto outras coisas do Linux e PHP trabalhando Junto e isso é algo muito bacana .. essa união com certeza gerar um bom ambiente de trabalho final para um cliente.. já que facilita bastante é inumeras questões =]...mt bom dino. Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted May 5, 2012 Report Share Posted May 5, 2012 Confesso que quando li o título do seu tópico pensei na hora sobre o comando tail :)Eu ficaria com a implementação em PHP, por funcionar em qualquer SO que roda o PHP. Mas já que você quer monitorar logs do squid, talvez seja melhor usar a segunda implementação. Sem contar que, como os amigos acima disseram, ela é mais performática.Um abraço. Quote Link to comment Share on other sites More sharing options...
Question
dinohills
Bom dia,
seguinte eu montei 2 funções em php para ler a quantidade de linhas do final de um arquivo txt.
Vou usar isso para ficar monitorando em tempo real o log do squid e ver o que o pessoal esta acessando.
Bom mas o que vem ao caso é. Eu fiz ela de 2 jeitos uma usando somente php e outra usando o exec com o comando tail do linux.
Gostaria de saber qual vocês acham melhor.
Ambas estão funcionando perfeitamente.
função 1
função 2Qual dessas vocês usariam ?
Edited by dinohillsLink to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.