[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 19 Sep 2003 19:38:24 -0000
albertel Fri Sep 19 15:38:24 2003 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- cach student level resource data
- (scantron parsing down to < 7 seconds per student) Whoo Hoo! (Used to be about 40 seconds)
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.419 loncom/lonnet/perl/lonnet.pm:1.420
--- loncom/lonnet/perl/lonnet.pm:1.419 Fri Sep 19 14:20:35 2003
+++ loncom/lonnet/perl/lonnet.pm Fri Sep 19 15:38:24 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.419 2003/09/19 18:20:35 albertel Exp $
+# $Id: lonnet.pm,v 1.420 2003/09/19 19:38:24 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -76,7 +76,7 @@
%libserv %pr %prp %metacache %packagetab %titlecache
%courselogs %accesshash %userrolehash $processmarker $dumpcount
%coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseresdatacache
- %usectioncache %domaindescription %domain_auth_def %domain_auth_arg_def
+ %userresdatacache %usectioncache %domaindescription %domain_auth_def %domain_auth_arg_def
%domain_lang_def %domain_city %domain_longi %domain_lati $tmpdir);
use IO::Socket;
@@ -856,6 +856,7 @@
sub is_cached {
my ($cache,$id,$time) = @_;
+ if (!$time) { $time=300; }
if (!exists($$cache{$id.'.time'})) {
return (undef,undef);
} else {
@@ -878,7 +879,7 @@
my ($udom,$unam,$courseid)=@_;
my $hashid="$udom:$unam:$courseid";
- my ($result,$cached)=&is_cached(\%usectioncache,$hashid,300);
+ my ($result,$cached)=&is_cached(\%usectioncache,$hashid);
if (defined($cached)) { return $result; }
$courseid=~s/\_/\//g;
$courseid=~s/^(\w)/\/$1/;
@@ -3301,7 +3302,7 @@
my ($coursenum,$coursedomain,@which)=@_;
my $coursehom=&homeserver($coursenum,$coursedomain);
my $hashid=$coursenum.':'.$coursedomain;
- my ($result,$cached)=&is_cached(\%courseresdatacache,$hashid,300);
+ my ($result,$cached)=&is_cached(\%courseresdatacache,$hashid);
unless (defined($cached)) {
my %dumpreply=&dump('resourcedata',$coursedomain,$coursenum);
$result=\%dumpreply;
@@ -3485,28 +3486,35 @@
# ----------------------------------------------------------- first, check user
#most student don\'t have any data set, check if there is some data
- #every thirty minutes
if (! &EXT_cache_status($udom,$uname)) {
- my %resourcedata=&get('resourcedata',
- [$courselevelr,$courselevelm,$courselevel],
- $udom,$uname);
- my ($tmp)=keys(%resourcedata);
+ my $hashid="$udom:$uname";
+ my ($result,$cached)=&is_cached(\%userresdatacache,$hashid);
+ if (!defined($cached)) {
+ my %resourcedata=&get('resourcedata',
+ [$courselevelr,$courselevelm,
+ $courselevel],$udom,$uname);
+ $result=\%resourcedata;
+ }
+ my ($tmp)=keys(%$result);
if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
- if ($resourcedata{$courselevelr}) {
- return $resourcedata{$courselevelr}; }
- if ($resourcedata{$courselevelm}) {
- return $resourcedata{$courselevelm}; }
- if ($resourcedata{$courselevel}) {
- return $resourcedata{$courselevel}; }
+ &do_cache(\%userresdatacache,$hashid,$result);
+ if ($$result{$courselevelr}) {
+ return $$result{$courselevelr}; }
+ if ($$result{$courselevelm}) {
+ return $$result{$courselevelm}; }
+ if ($$result{$courselevel}) {
+ return $$result{$courselevel}; }
} else {
if ($tmp!~/No such file/) {
&logthis("<font color=blue>WARNING:".
" Trying to get resource data for ".
$uname." at ".$udom.": ".
$tmp."</font>");
+ &do_cache(\%userresdatacache,$hashid,undef);
} elsif ($tmp=~/error:No such file/) {
&EXT_cache_set($udom,$uname);
} elsif ($tmp =~ /^(con_lost|no_such_host)/) {
+ &do_cache(\%userresdatacache,$hashid,undef);
return $tmp;
}
}