[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}}) {