--- loncom/lonnet/perl/lonnet.pm 2002/12/05 23:13:54 1.307
+++ loncom/lonnet/perl/lonnet.pm 2002/12/05 23:27:46 1.308
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.307 2002/12/05 23:13:54 albertel Exp $
+# $Id: lonnet.pm,v 1.308 2002/12/05 23:27:46 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -80,7 +80,8 @@ use vars
qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom
%libserv %pr %prp %metacache %packagetab %titlecache
%courselogs %accesshash $processmarker $dumpcount
- %coursedombuf %coursehombuf %courseresdatacache %domaindescription);
+ %coursedombuf %coursehombuf %courseresdatacache
+ %studentresdatacache %domaindescription);
use IO::Socket;
use GDBM_File;
use Apache::Constants qw(:common :http);
@@ -2848,25 +2849,32 @@ sub EXT {
my $courselevelm=$courseid.'.'.$mapparm;
# ----------------------------------------------------------- first, check user
- my %resourcedata=&get('resourcedata',
- [$courselevelr,$courselevelm,$courselevel],
- $udom,$uname);
- my ($tmp)=keys(%resourcedata);
- if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
- if ($resourcedata{$courselevelr}) {
- return $resourcedata{$courselevelr}; }
- if ($resourcedata{$courselevelm}) {
- return $resourcedata{$courselevelm}; }
- if ($resourcedata{$courselevel}) {
- return $resourcedata{$courselevel}; }
- } else {
- if ($tmp!~/No such file/) {
- &logthis("WARNING:".
- " Trying to get resource data for ".
- $uname." at ".$udom.": ".
- $tmp."");
- } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
- return $tmp;
+ #most student don't have any data set, check if there is some data
+ #every thirty minutes
+ if (!exists($studentresdatacache{$uname.'_'.$udom})
+ || $studentresdatacache{$uname.'_'.$udom} > (time+1800)) {
+ my %resourcedata=&get('resourcedata',
+ [$courselevelr,$courselevelm,$courselevel],
+ $udom,$uname);
+ my ($tmp)=keys(%resourcedata);
+ if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
+ if ($resourcedata{$courselevelr}) {
+ return $resourcedata{$courselevelr}; }
+ if ($resourcedata{$courselevelm}) {
+ return $resourcedata{$courselevelm}; }
+ if ($resourcedata{$courselevel}) {
+ return $resourcedata{$courselevel}; }
+ } else {
+ if ($tmp!~/No such file/) {
+ &logthis("WARNING:".
+ " Trying to get resource data for ".
+ $uname." at ".$udom.": ".
+ $tmp."");
+ } elsif ($tmp=~/error:No such file/) {
+ $studentresdatacache{$uname.'_'.$udom}=time;
+ } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
+ return $tmp;
+ }
}
}