亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2223 | 回復(fù): 3
打印 上一主題 下一主題

[Hive] Perl 使用 Archive::Tar讀取 1G 的 Log文件 out of memory [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-07-25 16:50 |只看該作者 |倒序?yàn)g覽
本帖最后由 hu_zhuang163 于 2013-07-25 16:56 編輯

Perl 使用 Archive::Tar讀取 1G 的 Log文件  out of memory
系統(tǒng)環(huán)境:  win7  使用的是activePerl 5.16.2

代碼如下:
  1.        
  2.       
  3.      my $logFile   = "E:\\a\\";
  4.              my @zipFiles = glob $logFile . "log_*.tar.gz"or die "can't find/read tar.gz $logFile ";
  5.         foreach (@zipFiles) {
  6.                 my $fileList = $_;
  7.                                 my $tar = Archive::Tar->new;
  8.                                 $tar->read($fileList);
  9.                                 my @files = $tar->list_files;
  10.                                 foreach my $logName (@files) {
  11.                                         if ( $logName =~ m/tanx_*/ ) {
  12.                                                 $tar->extract_file( $logName, "tanxTemp.out" );
  13.        
  14.                                                 open( DATA, "<", "tanxTemp.out" ) || die "cannot open the file: $!\n";
  15.                                                 while ( my $line = <DATA> ) {
  16.                                                         my @lineAry  = split /,/, $line;
  17.                                                         my $ip = $lineAry[8];
  18.                                                          $tanxIPHash{$ip}="1";

  19.                                                 }
  20.                                                 close(DATA);
  21.                                         }
  22.                                        
  23.                                 }
  24.                 }


復(fù)制代碼
我大致知道原因   按照模塊說(shuō)明, 使用Archive::Tar這個(gè)模塊 read 方法 是把所有的內(nèi)容都讀取到內(nèi)存中在處理 , 可能就是這個(gè)導(dǎo)致的

然后我使用這樣
  1.        
  2. my $next = Archive::Tar->iter( "example.tar.gz", 1, {filter => qr/\.pm$/} );

  3.     while( my $f = $next->() ) {
  4.         print $f->name, "\n";

  5.         $f->extract or warn "Extraction failed";

  6.         # ....
  7.     }
復(fù)制代碼
好像還是不行 ,哪位高手有處理大文件的經(jīng)驗(yàn)的 ,求鏈接

論壇徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亞冠之大阪鋼巴
日期:2015-08-07 20:57:582015亞冠之大阪鋼巴
日期:2015-09-02 14:09:09
2 [報(bào)告]
發(fā)表于 2013-07-25 16:52 |只看該作者
用while試試?

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-07-25 16:57 |只看該作者
看了模塊說(shuō)明

然后我使用了
    while( my $f = $next->() ) {
        print $f->name, "\n";

        $f->extract or warn "Extraction failed";

        # ....
    }

好像還是不行

回復(fù) 2# 只是一個(gè)紅薯


   

論壇徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亞冠之大阪鋼巴
日期:2015-08-07 20:57:582015亞冠之大阪鋼巴
日期:2015-09-02 14:09:09
4 [報(bào)告]
發(fā)表于 2013-07-25 17:02 |只看該作者
  foreach (@zipFiles) =>while(..)是改成這個(gè)不行嗎
hu_zhuang163 發(fā)表于 2013-07-25 16:57
看了模塊說(shuō)明

然后我使用了
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP