#!/usr/bin/perl use strict; use warnings; use lib "$ENV{LJHOME}/cgi-bin"; require 'ljlib.pl'; use LJ::PersistentQueue; my $dbr = LJ::get_db_reader() or die; print " - Creating queue...\n"; my $q = LJ::queue('content_search_index'); $q->empty; print " - Dumping userusage. This will probably take hella long...\n"; my ($count) = $dbr->selectrow_array("SELECT COUNT(userid) FROM userusage"); my $blocksize = 1_000; my $dumpcount = 0; for (my $i = 0; $i < $count; $i += $blocksize) { my $sth = $dbr->prepare("SELECT userid FROM userusage ORDER BY timeupdate DESC LIMIT $i,$blocksize"); die $dbr->errstr if $dbr->err; my $rowcount = $sth->execute; die $dbr->errstr if $dbr->err; $dumpcount += $rowcount; my $ids = $sth->fetchall_arrayref; my @ids = map { @{$_}} @$ids; $q->add(@ids); printf("%0.2f%%\r", ($dumpcount / $count * 100)); last if $rowcount < $blocksize; } print " - userusage rows: $count\n - rows dumped: $dumpcount\n - done\n";