- 论坛徽章:
- 0
|
本帖最后由 hu_zhuang163 于 2013-08-09 14:58 编辑
- #==========================
- #函数名:getTanxImprLogResultByDate
- #功 能:计算指定日期所有的 Tanx 的 Impr 数据
- #参 数: $obtaintime:需要计算的日期,格式为yyyymmdd
- #返回值:
- sub getTanxImprLogResultByDate {
- my ($date,$logFile) = @_;
- #找出 时间段内的zip 文件
- say( "---------------------------------impr操作 start-------");
- my @zipFiles = glob $logFile . "log_".$date.".tar.gz" or die "can't find/read tar.gz $logFile ";
- foreach (@zipFiles) {
- my $fileList = $_;
- my $startIndex = rindex( $fileList, "log_" );
- my $zipDate = substr $fileList, $startIndex + 4, 8;
- if ( $zipDate =$date) {
- say( "---impr操作 找到日期".$date."-------");
- my $next = Archive::Tar->iter($fileList, 1, {filter => qr(^impr*)} );
- while( my $f = $next->() ) {
- my $logName=$f->name;
- say $logName;
- if($logName =~ m/impr_*/){
- $f->extract or warn "Extraction failed";
-
- open( DATA, "<", $logName ) || die "cannot open the file: $!\n";
- while ( my $line = <DATA> ) {
- my @lineAry = split /,/, $line;
- my $unId=$lineAry[0];
-
- if (exists($todayClickHash{$unId} ) ) {
- $todayClickHash{$unId} = "1,".$todayClickHash{$unId};
- }
-
- }
- close(DATA);
- unlink $logName;
- }
-
- }
- }
- }
- say( "---impr操作 end-------");
- }
复制代码 现在错误信息是 对 某一个2G文件内的 小时日志 impr_2013060320.log 大小250M
出现 Out of memory!
菜鸟请教
|
|