[Cascavel-pm] Ler o arquivo do final

Solli Moreria Honorio shonorio em terra.com.br
Sábado Junho 5 17:35:23 CDT 2004


Luís,

Eu nunca precisei de nada parecido, mas acredito que uma boa alternativa
seria você fazer a busca binária mesmo. 

Você poderia armazenar a última posição do acesso e continuar daquele
ponto (se é que vc já não esteja fazendo isto).

Eu utilizo um sistema para gerar estatística de acesso nos sites de web
escrito em Perl, o nosso log é grande ( + 50 Mb ), e ele utiliza um
esquema assim.

Se você quiser dar uma olhada no cara (se é que já não conhece) vai aí o
link http://awstats.sourceforge.net/

Abraços,

Solli

-----Original Message-----
From: cascavel-pm-bounces em mail.pm.org
[mailto:cascavel-pm-bounces em mail.pm.org] On Behalf Of Luís Fernando
Sent: sábado, 5 de junho de 2004 11:39
To: Cascavel Perl Mongers
Subject: Re: [Cascavel-pm] Ler o arquivo do final

Legal.

Eu estava precisando disso esses dias exatamente para o que citaram
num dos tópicos mostrados nesse site: Ler um log até a data de ontem
(na verdade é um programa que analisa log de X em X minutos, então ele
deve analisar só a partir dos últimos X minutos).

Usei o Date:ICal para manipular data/hora e... como achei que ficaria
ineficiente ler de trás para frente (o arquivo tem em média umas
200.000 linhas e 50 MBs), acabei fazendo uma busca binária nele até
achar a data anterior à que eu estou procurando. Mas não tenho certeza
se fica muito mais eficiente assim.
Eu sei que o que mais consome tempo de HD são seeks, e em um arquivo
de 200.000 linhas podemos estimar uns 16 seeks (log2)... Mas se, para
ler o arquivo de trás para frente for necessário dar um seek para cada
linha (ou fazer uma paginação e dar 1 seek para cada 1000 linhas, por
exemplo), consumiremos muito mais...

Alguém conhece alguma solução mais eficiente?

/*

+---------------------------------+
| Luís Fernando Estrozi           |
+---------------------------------+
| Ciência da Computação - USP     |
|                                 |
| mailto:lemon em grad.icmc.usp.br   |
| ICQ#: 25541891                  |
|                                 |
| http://grad.icmc.usp.br/~lemon/ |
+---------------------------------+

There are 10 types of people in the world: Those who understand binary,
and those who don't

*/ EOF

|---> Original Message <---> 5/6/2004, 08:39 <---|
Return-Path: <cascavel-pm-bounces em mail.pm.org>
X-Original-To: lemon em grad.icmc.usp.br
Delivered-To: lemon em grad.icmc.usp.br
Received: from www.pm.org (mail.pm.org [64.49.222.22])
        by mail.grad.icmc.usp.br (Postfix) with ESMTP id D942AFF511
        for <lemon em grad.icmc.usp.br>; Sat,  5 Jun 2004 08:31:12 -0300
(EST)
Received: from www.pm.org (localhost [127.0.0.1])
        by www.pm.org (8.12.11/8.12.11) with ESMTP id i55BdBMl024955;
        Sat, 5 Jun 2004 06:39:38 -0500
Received: from linares.terra.com.br (linares.terra.com.br
[200.154.55.228])
        by www.pm.org (8.12.11/8.12.11) with ESMTP id i55Bd8rP024952
        for <cascavel-pm em mail.pm.org>; Sat, 5 Jun 2004 06:39:09 -0500
Received: from pasto.terra.com.br (pasto.terra.com.br [200.154.55.137])
        by linares.terra.com.br (Postfix) with ESMTP id 3B7E4DDC2C1
        for <cascavel-pm em mail.pm.org>; Sat,  5 Jun 2004 08:39:07 -0300
(BRT)
Received: from eraser (200-207-203-50.dsl.telesp.net.br
[200.207.203.50])
        (authenticated user shonorio)
        by pasto.terra.com.br (Postfix) with ESMTP id E2B8F3C009
        for <cascavel-pm em mail.pm.org>; Sat,  5 Jun 2004 08:39:05 -0300
(BRT)
From: "Solli Moreria Honorio" <shonorio em terra.com.br>
To: "Cascavel Perl Mongers" <cascavel-pm em mail.pm.org>
Date: Sat, 5 Jun 2004 08:39:14 -0300
Message-ID: <000001c44af1$bac430d0$32cbcfc8 em eraser>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.2616
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2739.300
Subject: [Cascavel-pm] Ler o arquivo do final
X-BeenThere: cascavel-pm em mail.pm.org
X-Mailman-Version: 2.1.4
Precedence: list
Reply-To: Cascavel Perl Mongers <cascavel-pm em mail.pm.org>
List-Id: Cascavel Perl Mongers <cascavel-pm.mail.pm.org>
List-Unsubscribe: <http://cascavel.pm.org/mailman/listinfo/cascavel-pm>,
        <mailto:cascavel-pm-request em mail.pm.org?subject=unsubscribe>
List-Archive: <http://www.pm.org/pipermail/cascavel-pm>
List-Post: <mailto:cascavel-pm em mail.pm.org>
List-Help: <mailto:cascavel-pm-request em mail.pm.org?subject=help>
List-Subscribe: <http://cascavel.pm.org/mailman/listinfo/cascavel-pm>,
        <mailto:cascavel-pm-request em mail.pm.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0128597405=="
Sender: cascavel-pm-bounces em mail.pm.org
Errors-To: cascavel-pm-bounces em mail.pm.org

Ola pessoal,
 
Há uns dias foi solicitado ajuda para ler um arquivo do final para o
início. No perlmonk tem algumas perguntas sobre isto, se ainda tiveres
com dúvida (ou querendo confirmar se implementou a melhor solução) dê
uma olhada no link abaixo.
http://www.perlmonks.com/index.pl?node_id=361397
 
Ou pode dar uma passeada no Cpan e dar uma olhada nos módulos abaixo :
http://search.cpan.org/~uri/File-ReadBackwards-1.02/ReadBackwards.pm
http://search.cpan.org/~mjd/Tie-File-0.96/lib/Tie/File.pm
 
Solli

_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em mail.pm.org
http://cascavel.pm.org/mailman/listinfo/cascavel-pm





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