*** rebuild_zebra.pl 2013-05-23 05:30:30.000000000 +0100 --- rebuild_zebra2.pl 2013-06-28 07:18:23.000000000 +0100 *************** *** 22,27 **** --- 22,28 ---- # If the cron job starts us in an unreadable dir, we will break without # this. chdir $ENV{HOME} if (!(-r '.')); + my $daemon_mode; my $directory; my $nosanitize; my $skip_export; *************** *** 43,48 **** --- 44,50 ---- my $verbose_logging = 0; my $zebraidx_log_opt = " -v none,fatal,warn "; my $result = GetOptions( + 'daemon' => \$daemon_mode, 'd:s' => \$directory, 'r|reset' => \$reset, 's' => \$skip_export, *************** *** 143,166 **** my $tester = XML::LibXML->new(); ! if ($authorities) { ! index_records('authority', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $authorityserverdir); ! } else { ! print "skipping authorities\n" if ( $verbose_logging ); ! } ! ! if ($biblios) { ! index_records('biblio', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $biblioserverdir); } else { ! print "skipping biblios\n" if ( $verbose_logging ); } - if ( $verbose_logging ) { print "====================\n"; print "CLEANING\n"; print "====================\n"; } if ($keep_export) { print "NOTHING cleaned : the export $directory has been kept.\n"; print "You can re-run this script with the -s "; --- 145,165 ---- my $tester = XML::LibXML->new(); ! if ($daemon_mode) { ! while(1) { ! do_one_pass() if ( zebraqueue_not_empty() ); ! sleep 5; ! } } else { ! do_one_pass(); } if ( $verbose_logging ) { print "====================\n"; print "CLEANING\n"; print "====================\n"; } + if ($keep_export) { print "NOTHING cleaned : the export $directory has been kept.\n"; print "You can re-run this script with the -s "; *************** *** 182,187 **** --- 181,211 ---- } } + sub do_one_pass { + print "do_one_pass has work to do\n"; + + if ($authorities) { + index_records('authority', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $authorityserverdir); + } else { + print "skipping authorities\n" if ( $verbose_logging ); + } + + if ($biblios) { + index_records('biblio', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $biblioserverdir); + } else { + print "skipping biblios\n" if ( $verbose_logging ); + } + } + + # Check the zebra update queue and return true if there are records to process + sub zebraqueue_not_empty { + my $query = $dbh->prepare('SELECT COUNT(*) FROM zebraqueue WHERE done = 0'); + $query->execute; + my $count = $query->fetchrow_arrayref->[0]; + print "count is $count\n"; + return $count > 0; + } + # This checks to see if the zebra directories exist under the provided path. # If they don't, then zebra is likely to spit the dummy. This returns true # if the directories had to be created, false otherwise.