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 } |