[LON-CAPA-cvs] cvs: loncom / lond
raeburn
raeburn@source.lon-capa.org
Mon, 27 Sep 2010 00:21:03 -0000
raeburn Mon Sep 27 00:21:03 2010 EDT
Modified files:
/loncom lond
Log:
- Only cache courseinfo for courses with this server as homeserver if
visited in last 24 hours or if in current user's list of active or future roles.
Index: loncom/lond
diff -u loncom/lond:1.458 loncom/lond:1.459
--- loncom/lond:1.458 Sun Sep 26 14:31:26 2010
+++ loncom/lond Mon Sep 27 00:21:02 2010
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.458 2010/09/26 14:31:26 raeburn Exp $
+# $Id: lond,v 1.459 2010/09/27 00:21:02 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -58,7 +58,7 @@
my $status='';
my $lastlog='';
-my $VERSION='$Revision: 1.458 $'; #' stupid emacs
+my $VERSION='$Revision: 1.459 $'; #' stupid emacs
my $remoteVERSION;
my $currenthostid="default";
my $currentdomainid;
@@ -7364,18 +7364,26 @@
sub check_homecourses {
my ($homecourses,$udom,$regexp,$count,$range,$start,$end,$major,$minor) = @_;
my ($result,%addtocache);
+ my $yesterday = time - 24*3600;
if (ref($homecourses) eq 'HASH') {
- my %okcourses;
+ my (%okcourses,%courseinfo,%recent);
my $hashref = &tie_domain_hash($udom, "nohist_courseids", &GDBM_WRCREAT());
if ($hashref) {
while (my ($key,$value) = each(%$hashref)) {
my $unesc_key = &unescape($key);
- next if ($unesc_key =~ /^lasttime:/);
+ if ($unesc_key =~ /^lasttime:(\w+)$/) {
+ my $cid = $1;
+ $cid =~ s/_/:/;
+ if ($value > $yesterday ) {
+ $recent{$cid} = 1;
+ }
+ next;
+ }
my $items = &Apache::lonnet::thaw_unescape($value);
if (ref($items) eq 'HASH') {
my $hashid = $unesc_key;
$hashid =~ s/_/:/;
- &Apache::lonnet::do_cache_new('courseinfo',$hashid,$items,600);
+ $courseinfo{$hashid} = $items;
if (ref($homecourses->{$hashid}) eq 'ARRAY') {
my ($reqdmajor,$reqdminor) = split(/\./,$items->{'releaserequired'});
if (&useable_role($reqdmajor,$reqdminor,$major,$minor)) {
@@ -7391,6 +7399,13 @@
&logthis('Failed to tie hash for nohist_courseids.db');
return;
}
+ foreach my $hashid (keys(%recent)) {
+ &Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600);
+ }
+ foreach my $hashid (keys(%{$homecourses})) {
+ next if ($recent{$hashid});
+ &Apache::lonnet::do_cache_new('courseinfo',$hashid,$courseinfo{$hashid},600);
+ }
foreach my $hashid (keys(%okcourses)) {
if (ref($homecourses->{$hashid}) eq 'ARRAY') {
foreach my $role (@{$homecourses->{$hashid}}) {