version 1.587.2.3.2.2, 2005/02/13 22:12:34
|
version 1.587.2.3.2.3, 2005/02/13 23:09:03
|
Line 36 use HTTP::Date;
|
Line 36 use HTTP::Date;
|
# use Date::Parse; |
# use Date::Parse; |
use vars |
use vars |
qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom |
qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom |
%libserv %pr %prp $metacache %packagetab %titlecache %courseresversioncache %resversioncache |
%libserv %pr %prp $memcache %packagetab %courseresversioncache %resversioncache |
%courselogs %accesshash %userrolehash $processmarker $dumpcount |
%courselogs %accesshash %userrolehash $processmarker $dumpcount |
%coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseinstcodebuf %courseownerbuf %courseresdatacache |
%coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseinstcodebuf %courseownerbuf %courseresdatacache |
%userresdatacache %getsectioncache %domaindescription %domain_auth_def %domain_auth_arg_def |
%userresdatacache %getsectioncache %domaindescription %domain_auth_def %domain_auth_arg_def |
Line 1023 EVALBLOCK
|
Line 1023 EVALBLOCK
|
} |
} |
|
|
sub devalidate_cache_new { |
sub devalidate_cache_new { |
my ($cache,$name,$id) = @_; |
my ($name,$id) = @_; |
if (1) { &Apache::lonnet::logthis("deleting $name:$id"); } |
if (1) { &Apache::lonnet::logthis("deleting $name:$id"); } |
$cache->delete(&escape($name.':'.$id)); |
$memcache->delete(&escape($name.':'.$id)); |
} |
} |
|
|
my $to_remember=10; |
my $to_remember=10; |
Line 1034 my %accessed;
|
Line 1034 my %accessed;
|
my $kicks=0; |
my $kicks=0; |
my $hits=0; |
my $hits=0; |
sub is_cached_new { |
sub is_cached_new { |
my ($cache,$name,$id,$debug) = @_; |
my ($name,$id,$debug) = @_; |
$debug=0; |
$debug=0; |
$id=&escape($name.':'.$id); |
$id=&escape($name.':'.$id); |
if (exists($remembered{$id})) { |
if (exists($remembered{$id})) { |
Line 1043 sub is_cached_new {
|
Line 1043 sub is_cached_new {
|
$hits++; |
$hits++; |
return ($remembered{$id},1); |
return ($remembered{$id},1); |
} |
} |
my $value = $cache->get($id); |
my $value = $memcache->get($id); |
if (!(defined($value))) { |
if (!(defined($value))) { |
if ($debug) { &Apache::lonnet::logthis("getting $id is not defined"); } |
if ($debug) { &Apache::lonnet::logthis("getting $id is not defined"); } |
return (undef,undef); |
return (undef,undef); |
Line 1058 sub is_cached_new {
|
Line 1058 sub is_cached_new {
|
} |
} |
|
|
sub do_cache_new { |
sub do_cache_new { |
my ($cache,$name,$id,$value,$time,$debug) = @_; |
my ($name,$id,$value,$time,$debug) = @_; |
$debug=0; |
$debug=0; |
$id=&escape($name.':'.$id); |
$id=&escape($name.':'.$id); |
my $setvalue=$value; |
my $setvalue=$value; |
Line 1066 sub do_cache_new {
|
Line 1066 sub do_cache_new {
|
$setvalue='__undef__'; |
$setvalue='__undef__'; |
} |
} |
if ($debug) { &Apache::lonnet::logthis("Setting $id to $value"); } |
if ($debug) { &Apache::lonnet::logthis("Setting $id to $value"); } |
$cache->set($id,$setvalue,300); |
$memcache->set($id,$setvalue,300); |
return $value; |
return $value; |
} |
} |
|
|
Line 4560 sub metadata {
|
Line 4560 sub metadata {
|
# Everything is cached by the main uri, libraries are never directly cached |
# Everything is cached by the main uri, libraries are never directly cached |
# |
# |
if (!defined($liburi)) { |
if (!defined($liburi)) { |
my ($result,$cached)=&is_cached_new($metacache,'meta',$uri); |
my ($result,$cached)=&is_cached_new('meta',$uri); |
if (defined($cached)) { return $result->{':'.$what}; } |
if (defined($cached)) { return $result->{':'.$what}; } |
} |
} |
{ |
{ |
Line 4574 sub metadata {
|
Line 4574 sub metadata {
|
$liburi=&declutter($liburi); |
$liburi=&declutter($liburi); |
$filename=$liburi; |
$filename=$liburi; |
} else { |
} else { |
&devalidate_cache_new($metacache,'meta',$uri); |
&devalidate_cache_new('meta',$uri); |
undef(%metaentry); |
undef(%metaentry); |
} |
} |
my %metathesekeys=(); |
my %metathesekeys=(); |
Line 4733 sub metadata {
|
Line 4733 sub metadata {
|
$metaentry{':keys'}=join(',',keys %metathesekeys); |
$metaentry{':keys'}=join(',',keys %metathesekeys); |
&metadata_generate_part0(\%metathesekeys,\%metaentry,$uri); |
&metadata_generate_part0(\%metathesekeys,\%metaentry,$uri); |
$metaentry{':allpossiblekeys'}=join(',',keys %metathesekeys); |
$metaentry{':allpossiblekeys'}=join(',',keys %metathesekeys); |
&do_cache_new($metacache,'meta',$uri,\%metaentry); |
&do_cache_new('meta',$uri,\%metaentry); |
# this is the end of "was not already recently cached |
# this is the end of "was not already recently cached |
} |
} |
return $metaentry{':'.$what}; |
return $metaentry{':'.$what}; |
Line 4797 sub gettitle {
|
Line 4797 sub gettitle {
|
my $urlsymb=shift; |
my $urlsymb=shift; |
my $symb=&symbread($urlsymb); |
my $symb=&symbread($urlsymb); |
if ($symb) { |
if ($symb) { |
my ($result,$cached)=&is_cached(\%titlecache,$symb,'title',600); |
my ($result,$cached)=&is_cached_new('title',$symb); |
if (defined($cached)) { |
if (defined($cached)) { |
return $result; |
return $result; |
} |
} |
Line 4812 sub gettitle {
|
Line 4812 sub gettitle {
|
} |
} |
$title=~s/\&colon\;/\:/gs; |
$title=~s/\&colon\;/\:/gs; |
if ($title) { |
if ($title) { |
return &do_cache(\%titlecache,$symb,$title,'title'); |
return &do_cache_new('title',$symb,$title,600); |
} |
} |
$urlsymb=$url; |
$urlsymb=$url; |
} |
} |
Line 5655 sub goodbye {
|
Line 5655 sub goodbye {
|
#converted |
#converted |
# &logthis(sprintf("%-20s is %s",'%metacache',scalar(%metacache))); |
# &logthis(sprintf("%-20s is %s",'%metacache',scalar(%metacache))); |
&logthis(sprintf("%-20s is %s",'%homecache',length(&freeze(\%homecache)))); |
&logthis(sprintf("%-20s is %s",'%homecache',length(&freeze(\%homecache)))); |
&logthis(sprintf("%-20s is %s",'%titlecache',length(&freeze(\%titlecache)))); |
# &logthis(sprintf("%-20s is %s",'%titlecache',length(&freeze(\%titlecache)))); |
&logthis(sprintf("%-20s is %s",'%courseresdatacache',length(&freeze(\%courseresdatacache)))); |
&logthis(sprintf("%-20s is %s",'%courseresdatacache',length(&freeze(\%courseresdatacache)))); |
#1.1 only |
#1.1 only |
&logthis(sprintf("%-20s is %s",'%userresdatacache',length(&freeze(\%userresdatacache)))); |
&logthis(sprintf("%-20s is %s",'%userresdatacache',length(&freeze(\%userresdatacache)))); |
Line 5810 BEGIN {
|
Line 5810 BEGIN {
|
|
|
} |
} |
|
|
$metacache=new Cache::Memcached({'servers'=>['127.0.0.1:11211']}); |
$memcache=new Cache::Memcached({'servers'=>['127.0.0.1:11211']}); |
|
|
$processmarker='_'.time.'_'.$perlvar{'lonHostID'}; |
$processmarker='_'.time.'_'.$perlvar{'lonHostID'}; |
$dumpcount=0; |
$dumpcount=0; |