Diff for /loncom/lonsql between versions 1.24 and 1.33

version 1.24, 2001/03/27 19:01:05 version 1.33, 2001/04/16 18:36:22
Line 23  sub wanted { Line 23  sub wanted {
     push(@metalist,"$dir/$_");      push(@metalist,"$dir/$_");
 }  }
   
   
 $childmaxattempts=10;  $childmaxattempts=10;
 $run =0;#running counter to generate the query-id  $run =0;#running counter to generate the query-id
   
Line 39  while ($configline=<CONFIG>) { Line 38  while ($configline=<CONFIG>) {
 }  }
 close(CONFIG);  close(CONFIG);
   
   # ------------------------------------- Make sure that database can be accessed
   {
       my $dbh;
       unless (
       $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0})
       ) { 
    print "Cannot connect to database!\n";
    exit;
       }
       else {
    $dbh->disconnect;
       }
   }
   
 # --------------------------------------------- Check if other instance running  # --------------------------------------------- Check if other instance running
   
 my $pidfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";  my $pidfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";
Line 60  while ($configline=<CONFIG>) { Line 73  while ($configline=<CONFIG>) {
     chomp($ip);      chomp($ip);
   
     $hostip{$ip}=$id;      $hostip{$ip}=$id;
   
     if ($id eq $perlvar{'lonHostID'}) { $thisserver=$name; }      if ($id eq $perlvar{'lonHostID'}) { $thisserver=$name; }
   
     $PREFORK++;      $PREFORK++;
Line 191  sub make_new_child { Line 203  sub make_new_child {
         #open database handle          #open database handle
  # making dbh global to avoid garbage collector   # making dbh global to avoid garbage collector
  unless (   unless (
  $dbh = DBI->connect("DBI:mysql:loncapa","www","123",{ RaiseError =>0,PrintError=>0})   $dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},{ RaiseError =>0,PrintError=>0})
  ) {    ) { 
             my $st=120+int(rand(240));               sleep(10+int(rand(20)));
     &logthis("<font color=blue>WARNING: Couldn't connect to database  ($st secs): $@</font>");      &logthis("<font color=blue>WARNING: Couldn't connect to database  ($st secs): $@</font>");
     print "database handle error\n";      print "database handle error\n";
     sleep($st);  
     exit;      exit;
   
   };    };
Line 225  sub make_new_child { Line 236  sub make_new_child {
     $queryid .= $run;      $queryid .= $run;
     print $client "$queryid\n";      print $client "$queryid\n";
           
     &logthis("QUERY: $query\n");      &logthis("QUERY: $query");
       &logthis("QUERY: $query");
       sleep 1;
             #prepare and execute the query              #prepare and execute the query
     my $sth = $dbh->prepare($query);      my $sth = $dbh->prepare($query);
     my $result;      my $result;
     my @files;      my @files;
     my $subsetflag=0;      my $subsetflag=0;
     unless ($sth->execute())      if ($query) {
     {   unless ($sth->execute())
  &logthis("<font color=blue>WARNING: Could not retrieve from database: $@</font>");   {
  $result="";      &logthis("<font color=blue>WARNING: Could not retrieve from database: $@</font>");
     }      $result="";
     else {   }
  my $r1=$sth->fetchall_arrayref;   else {
  my @r2;      my $r1=$sth->fetchall_arrayref;
  map {my $a=$_;       my @r2;
      my @b=map {escape($_)} @$a;      map {my $a=$_; 
      push @files,@{$a}[3];   my @b=map {escape($_)} @$a;
      push @r2,join(",", @b)   push @files,@{$a}[3];
      } (@$r1);   push @r2,join(",", @b)
  $result=join("&",@r2);   } (@$r1);
       $result=join("&",@r2);
    }
     }      }
   
     # do custom metadata searching here and build into result      # do custom metadata searching here and build into result
     if ($custom) {      if ($custom or $customshow) {
  &logthis("am going to do custom query for $custom");   &logthis("am going to do custom query for $custom");
  if (@files) {   if ($query) {
     @metalist=map {$perlvar{'lonDocRoot'}.$_.'.meta'} @files;      @metalist=map {$perlvar{'lonDocRoot'}.$_.'.meta'} @files;
  }   }
  else {   else {
Line 264  sub make_new_child { Line 278  sub make_new_child {
  # if file is indicated in sql database and is   # if file is indicated in sql database and is
  # part of query result list, then do the pattern match.   # part of query result list, then do the pattern match.
  my $customresult='';   my $customresult='';
    my @r2;
  foreach my $m (@metalist) {   foreach my $m (@metalist) {
     my $fh=IO::File->new($m);      my $fh=IO::File->new($m);
     my @lines=<$fh>;      my @lines=<$fh>;
Line 276  sub make_new_child { Line 291  sub make_new_child {
     $stuff=~s/\n?\<$f[^\>]*\>.*?<\/$f[^\>]*\>\n?//;      $stuff=~s/\n?\<$f[^\>]*\>.*?<\/$f[^\>]*\>\n?//;
  }   }
  my $m2=$m; my $docroot=$perlvar{'lonDocRoot'};   my $m2=$m; my $docroot=$perlvar{'lonDocRoot'};
  $m2=~s/^$docroot//; $m2=~s/\.meta$//;   $m2=~s/^$docroot//;
    $m2=~s/\.meta$//;
    unless ($query) {
       my $q2="select * from metadata where url like '$m2'";
       my $sth = $dbh->prepare($q2);
       $sth->execute();
       my $r1=$sth->fetchall_arrayref;
       map {my $a=$_; 
    my @b=map {escape($_)} @$a;
    push @files,@{$a}[3];
    push @r2,join(",", @b)
    } (@$r1);
    }
 # &logthis("found: $stuff");  # &logthis("found: $stuff");
  $customresult.='&custom='.escape($m2).','.escape($stuff);   $customresult.='&custom='.escape($m2).','.escape($stuff);
     }      }
  }   }
    $result=join("&",@r2) unless $query;
  $result.=$customresult;   $result.=$customresult;
     }      }
     # reply with result      # reply with result
Line 335  sub reply { Line 363  sub reply {
     }      }
   } else {    } else {
     $answer='self_reply';      $answer='self_reply';
       $answer=subreply($cmd,$server);
   }     } 
   return $answer;    return $answer;
 }  }

Removed from v.1.24  
changed lines
  Added in v.1.33


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>