[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 26 Apr 2006 14:50:57 -0000
albertel Wed Apr 26 10:50:57 2006 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- making coursedescription not update the env by default and thus faster
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.730 loncom/lonnet/perl/lonnet.pm:1.731
--- loncom/lonnet/perl/lonnet.pm:1.730 Tue Apr 18 16:36:00 2006
+++ loncom/lonnet/perl/lonnet.pm Wed Apr 26 10:50:56 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.730 2006/04/18 20:36:00 www Exp $
+# $Id: lonnet.pm,v 1.731 2006/04/26 14:50:56 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -188,6 +188,7 @@
my ($cmd,$server)=@_;
unless (defined($hostname{$server})) { return 'no_such_host'; }
my $answer=subreply($cmd,$server);
+ &Apache::lonnet::logthis("$cmd");
if (($answer=~/^refused/) || ($answer=~/^rejected/)) {
&logthis("<font color=\"blue\">WARNING:".
" $cmd to $server returned $answer</font>");
@@ -2600,7 +2601,7 @@
# ---------------------------------------------------------- Course Description
sub coursedescription {
- my $courseid=shift;
+ my ($courseid,$args)=@_;
$courseid=~s/^\///;
$courseid=~s/\_/\//g;
my ($cdomain,$cnum)=split(/\//,$courseid);
@@ -2610,7 +2611,27 @@
# trying and trying and trying to get the course description.
my %envhash=();
my %returnhash=();
- $envhash{'course.'.$normalid.'.last_cache'}=time;
+
+ my $expiretime=600;
+ if ($env{'request.course.id'} eq $normalid) {
+ $expiretime=120;
+ }
+
+ my $prefix='course.'.$cdomain.'_'.$cnum.'.';
+ if (!$args->{'freshen_cache'}
+ && ((time-$env{$prefix.'last_cache'}) < $expiretime) ) {
+ foreach my $key (keys(%env)) {
+ next if ($key !~ /^\Q$prefix\E(.*)/);
+ my ($setting) = $1;
+ $returnhash{$setting} = $env{$key};
+ }
+ return %returnhash;
+ }
+
+ # get the data agin
+ if (!$args->{'one_time'}) {
+ $envhash{'course.'.$normalid.'.last_cache'}=time;
+ }
if ($chome ne 'no_host') {
%returnhash=&dump('environment',$cdomain,$cnum);
if (!exists($returnhash{'con_lost'})) {
@@ -2628,7 +2649,9 @@
$envhash{'course.'.$normalid.'.num'}=$cnum;
}
}
- &appenv(%envhash);
+ if (!$args->{'one_time'}) {
+ &appenv(%envhash);
+ }
return %returnhash;
}
@@ -3448,7 +3471,7 @@
my ($cdom,$cnum,$csec)=split(/\//,$courseid);
my $prefix='course.'.$cdom.'_'.$cnum.'.';
if ((time-$env{$prefix.'last_cache'})>$expiretime) {
- &coursedescription($courseid);
+ &coursedescription($courseid,{'freshen_cache' => 1});
}
if (($env{$prefix.'res.'.$uri.'.lock.sections'}=~/\,\Q$csec\E\,/)
|| ($env{$prefix.'res.'.$uri.'.lock.sections'} eq 'all')) {