[Koha-cvs] CVS: koha/z3950 processz3950queue,1.2,1.3
Paul POULAIN
tipaul at users.sourceforge.net
Tue Apr 29 10:10:17 CEST 2003
Update of /cvsroot/koha/koha/z3950
In directory sc8-pr-cvs1:/tmp/cvs-serv10602/z3950
Modified Files:
processz3950queue
Log Message:
z3950 support is coming...
* adding a syntax column in z3950 table = this column will say wether the z3950 must be called with PerferedRecordsyntax => USMARC or PerferedRecordsyntax => UNIMARC. I tried some french UNIMARC z3950 servers, and some only send USMARC, some only UNIMARC, some can answer with both.
Note this is a 1st draft. More to follow (today ? I hope).
Index: processz3950queue
===================================================================
RCS file: /cvsroot/koha/koha/z3950/processz3950queue,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** processz3950queue 22 Apr 2003 12:22:52 -0000 1.2
--- processz3950queue 29 Apr 2003 08:09:42 -0000 1.3
***************
*** 5,9 ****
use C4::Context;
use DBI;
! #use strict;
use C4::Biblio;
use C4::Output;
--- 5,9 ----
use C4::Context;
use DBI;
! use strict;
use C4::Biblio;
use C4::Output;
***************
*** 20,24 ****
}
# Get real apacheuser from koha.conf or reparsing httpd.conf
! my $apacheuser='www-data';
my $uid=0;
unless ($uid = (getpwnam($apacheuser))[2]) {
--- 20,24 ----
}
# Get real apacheuser from koha.conf or reparsing httpd.conf
! my $apacheuser='paul';
my $uid=0;
unless ($uid = (getpwnam($apacheuser))[2]) {
***************
*** 28,33 ****
$<=$uid;
}
-
-
my $dbh = C4::Context->dbh;
--- 28,31 ----
***************
*** 53,58 ****
if ((time-$lastrun)>5) {
print "starting loop\n";
! if ($checkqueue) {
! print "checkqueue=1\n";
$checkqueue=0;
my $sth=$dbh->prepare("select id,term,type,servers from z3950queue order by id");
--- 51,55 ----
if ((time-$lastrun)>5) {
print "starting loop\n";
! if ($checkqueue) { # everytime a SIG{HUP} is recieved
$checkqueue=0;
my $sth=$dbh->prepare("select id,term,type,servers from z3950queue order by id");
***************
*** 61,65 ****
if ($forkcounter<12) {
my $now=time();
! $stk=$dbh->prepare("select id,server,startdate,enddate,numrecords,active from z3950results where queryid=$id");
($stk->execute) || (next);
my %serverdone;
--- 58,62 ----
if ($forkcounter<12) {
my $now=time();
! my $stk=$dbh->prepare("select id,server,startdate,enddate,numrecords,active from z3950results where queryid=$id");
($stk->execute) || (next);
my %serverdone;
***************
*** 92,99 ****
}
$term='"'.$term.'"';
! $query="\@attr $attr $term";
my $totalrecords=0;
my $serverinfo;
my $stillprocessing=0;
foreach $serverinfo (split(/\s+/, $servers)) {
(next) if ($serverdone{$serverinfo} == 1);
--- 89,97 ----
}
$term='"'.$term.'"';
! my $query="\@attr $attr $term";
my $totalrecords=0;
my $serverinfo;
my $stillprocessing=0;
+ my $globalname;
foreach $serverinfo (split(/\s+/, $servers)) {
(next) if ($serverdone{$serverinfo} == 1);
***************
*** 102,110 ****
$forkcounter++;
} else {
- #$sth->finish;
- #$sti->finish;
- #$dbh->disconnect;
my $dbi = C4::Context->dbh;
my ($name, $server, $database, $user, $password) = split(/\//, $serverinfo, 5);
$server=~/(.*)\:(\d+)/;
my $servername=$1;
--- 100,106 ----
$forkcounter++;
} else {
my $dbi = C4::Context->dbh;
my ($name, $server, $database, $user, $password) = split(/\//, $serverinfo, 5);
+ $globalname=$name;
$server=~/(.*)\:(\d+)/;
my $servername=$1;
***************
*** 118,129 ****
$stj->execute;
($resultsid) = $stj->fetchrow;
} else {
my $stj=$dbi->prepare("select id from z3950results where server=$q_serverinfo and queryid=$id");
$stj->execute;
($resultsid) = $stj->fetchrow;
unless ($resultsid) {
! my $stj=$dbi->prepare("insert into z3950results (server, queryid, startdate) values ($q_serverinfo, $id, $now)");
$stj->execute;
$resultsid=$dbi->{'mysql_insertid'};
}
}
--- 114,128 ----
$stj->execute;
($resultsid) = $stj->fetchrow;
+ $stj->finish;
} else {
my $stj=$dbi->prepare("select id from z3950results where server=$q_serverinfo and queryid=$id");
$stj->execute;
($resultsid) = $stj->fetchrow;
+ $stj->finish;
unless ($resultsid) {
! $stj=$dbi->prepare("insert into z3950results (server, queryid, startdate) values ($q_serverinfo, $id, $now)");
$stj->execute;
$resultsid=$dbi->{'mysql_insertid'};
+ $stj->finish;
}
}
***************
*** 149,162 ****
}
if ($noconnection || $error) {
} else {
! eval { $conn->option(preferredRecordSyntax => Net::Z3950::RecordSyntax::USMARC);};
! if ($@) {
! print "ERROR: $@\n";
! } else {
! print "Q: $query\n";
my $rs=$conn->search($query);
! pe();
my $numresults=$rs->size();
! pe();
my $i;
my $result='';
--- 148,162 ----
}
if ($noconnection || $error) {
+ warn "no connection at $globalname ";
} else {
! eval { $conn->option(preferredRecordSyntax => Net::Z3950::RecordSyntax::USMARC);};
! if ($@) {
! print "$globalname ERROR: $@\n";
! } else {
! print "Q: $query\n";
my $rs=$conn->search($query);
! pe();
my $numresults=$rs->size();
! pe();
my $i;
my $result='';
***************
*** 164,169 ****
for ($i=1; $i<=(($numresults<80) ? ($numresults) : (80)); $i++) {
my $rec=$rs->record($i);
! my $marcdata=$rec->rawdata();
$result.=$marcdata;
}
my $scantimerend=time();
--- 164,172 ----
for ($i=1; $i<=(($numresults<80) ? ($numresults) : (80)); $i++) {
my $rec=$rs->record($i);
! my $marcdata=$rec->render();
! my $marcrecord = MARC::File::USMARC::decode($rec->render());
! warn "$globalname ==> ".$marcrecord->as_formatted();
$result.=$marcdata;
+ my ($notmarcrecord,$alreadyindb,$alreadyinfarm,$imported) = ImportBreeding($marcdata,1,"Z3950-$globalname");
}
my $scantimerend=time();
***************
*** 173,186 ****
if ($elapsed) {
my $speed=int($numresults/$elapsed*100)/100;
! print " SPEED: $speed $server done $numrecords\n";
}
-
my $q_result=$dbi->quote($result);
($q_result) || ($q_result='""');
$now=time();
! my $task="update z3950results set numrecords=$numresults,numdownloaded=$numrecords,highestseen=0,results=$q_result,enddate=$now where id=$resultsid";
! my $stj=$dbi->prepare($task);
! $stj->execute;
! ImportBreeding($q_result,1,"Z3950");
my $counter=0;
while ($counter<60 && $numrecords<$numresults) {
--- 176,193 ----
if ($elapsed) {
my $speed=int($numresults/$elapsed*100)/100;
! print "$globalname SPEED: $speed $server done $numrecords\n";
}
my $q_result=$dbi->quote($result);
($q_result) || ($q_result='""');
$now=time();
! if ($numresults >0) {
! my $task="update z3950results set numrecords=$numresults,numdownloaded=$numrecords,highestseen=0,results=$q_result,enddate=$now where id=$resultsid";
! my $stj=$dbi->prepare($task);
! $stj->execute;
! } else { # no results...
! my $task="update z3950results set numrecords=$numresults,numdownloaded=$numrecords,highestseen=0,results='',enddate=$now where id=$resultsid";
! my $stj=$dbi->prepare($task);
! $stj->execute;
! }
my $counter=0;
while ($counter<60 && $numrecords<$numresults) {
***************
*** 215,219 ****
sleep 5;
}
! }
}
# FIXME - There's already a $stj in this scope
--- 222,226 ----
sleep 5;
}
! }
}
# FIXME - There's already a $stj in this scope
***************
*** 224,228 ****
exit;
sub pe {
! return 0;
my $code=$conn->errcode();
my $msg=$conn->errmsg();
--- 231,235 ----
exit;
sub pe {
! # return 0;
my $code=$conn->errcode();
my $msg=$conn->errmsg();
***************
*** 233,238 ****
ADDTL: $ai
EOF
! return 0;
! }
}
}
--- 240,245 ----
ADDTL: $ai
EOF
! return 0;
! }
}
}
***************
*** 252,285 ****
}
- # sub getrecord {
- # my $server=shift;
- # my $base=shift;
- # my $query=shift;
- # my $auth=shift;
- # my $id=shift;
- # open (M, "|yaz-client -m yaz-$id.mrc >>yaz.out 2>>yaz.err");
- # select M;
- # $|=1;
- # select STDOUT;
- # ($auth) && ($auth="authentication $auth\n");
- # print M << "EOF";
- # $auth\open $server
- # base $base
- # setnames
- # $query
- # s
- # s
- # s
- # s
- # s
- # s
- # s
- # s
- # s
- # s
- # quit
- # EOF
- # close M;
- # }
sub reap {
$forkcounter--;
--- 259,262 ----
More information about the Koha-cvs
mailing list