exigrey.pl
changeset 22 91803f1e2741
parent 21 f47d0026ab09
child 23 bce276394054
equal deleted inserted replaced
21:f47d0026ab09 22:91803f1e2741
    65 	});
    65 	});
    66 	exit 0;
    66 	exit 0;
    67     }
    67     }
    68 
    68 
    69     if ($opt_stats) {
    69     if ($opt_stats) {
    70 	my %h;
    70 	foreach ((@ARGV ? @ARGV : $DEFAULT{db})) {
    71 	my $db = connectDB(\%h, shift || $DEFAULT{db});
    71 	    my %h;
       
    72 	    my $db = connectDB(\%h, $_);
    72 
    73 
    73 	my ($seen, $returned, $oldest);
    74 	    my ($seen, $returned, $oldest);
    74 	$oldest = time();
    75 	    $oldest = time();
    75 	iterate(%h, sub {
    76 	    iterate(%h, sub {
    76 	    my ($item, $v0, $v1, $dv) = @_;
    77 		my ($item, $v0, $v1, $dv) = @_;
    77 	    ++$seen;
    78 		++$seen;
    78 	    ++$returned if $dv;
    79 		++$returned if $dv;
    79 	    $oldest = $v0 if $v0 < $oldest;
    80 		$oldest = $v0 if $v0 < $oldest;
    80 	});
    81 	    });
    81 
    82 
    82 	$_ = <<__;
    83 	    $_ = <<__;
    83         date: %s
    84 	    date: %s
    84           db: $db (ls: %.1f MB / du: %.1f MB)
    85 	      db: $db (ls: %.1f MB / du: %.1f MB)
    85        total: $seen
    86 	   total: $seen
    86 not returned: %d (%d%%)
    87     not returned: %d (%d%%)
    87       oldest: %.1f days (%s)
    88 	  oldest: %.1f days (%s)
    88 __
    89 __
    89 	printf $_, 
    90 	    printf $_, 
    90 		scalar(localtime), 
    91 		    scalar(localtime), 
    91 		(-s $db) / (1024*1024),
    92 		    (-s $db) / (1024*1024),
    92 		((stat $db)[12]*512)/(1024*1024),
    93 		    ((stat $db)[12]*512)/(1024*1024),
    93 		$seen - $returned, 
    94 		    $seen - $returned, 
    94 		int(100 * ($seen-$returned)/$seen), 
    95 		    int(100 * ($seen-$returned)/$seen), 
    95 		((time - $oldest) / 86400), scalar(localtime $oldest);
    96 		    ((time - $oldest) / 86400), scalar(localtime $oldest);
       
    97 	    print "\n" if @ARGV;
    96 
    98 
       
    99 	}
    97 	exit 0;
   100 	exit 0;
    98     }
   101     }
    99 
   102 
   100     if ($opt_clean) {
   103     if ($opt_clean) {
   101 	my %h;
   104 	my $cut = time() - (86400 * (@ARGV ? shift : 7));
   102 	my $days = shift; $days = 7 unless defined $days;
   105 	foreach (@ARGV ? @ARGV : $DEFAULT{db}) {
   103 	my $db = shift; $db = $DEFAULT{db} unless defined $db;
   106 	    my %h;
       
   107 	    my $tmp = tmpfile();
       
   108 	    my $db = connectDB(\%h, $_);
       
   109 	    iterate(%h, sub {
       
   110 		my ($item, $v0, $v1, $dv) = @_;
       
   111 		print $tmp $item if $v1 <= $cut;
       
   112 	    });
   104 
   113 
   105 	my $cut = time() - ($days * 86400);
   114 	    seek($tmp, 0, 0) or die "Can't seek tmpfile";
   106 	my $tmp = tmpfile();
   115 	    delete $h{$_} while <$tmp>;
       
   116 	    close($tmp);
   107 
   117 
   108 	$db = connectDB(\%h, $db);
   118 	    print "$. items deleted from $db\n";
   109 	iterate(%h, sub {
   119 	}
   110 	    my ($item, $v0, $v1, $dv) = @_;
       
   111 	    print $tmp $item if $v1 <= $cut;
       
   112 	});
       
   113 
       
   114 	seek($tmp, 0, 0) or die "Can't seek tmpfile";
       
   115 	delete $h{$_} while <$tmp>;
       
   116 
       
   117 	print "$. items deleted\n";
       
   118 	exit 0;
   120 	exit 0;
   119     }
   121     }
   120 
   122 
   121     print unseen(@ARGV, 10) . "\n";
   123     print unseen(@ARGV, 10) . "\n";
   122 }
   124 }