|
Lines 534-551
with this method.
Link Here
|
| 534 |
|
534 |
|
| 535 |
=cut |
535 |
=cut |
| 536 |
|
536 |
|
| 537 |
# FIXME: running this under mod_perl will require a means of |
537 |
my %syspref_cache; |
| 538 |
# flushing the caching mechanism. |
|
|
| 539 |
|
| 540 |
my %sysprefs; |
| 541 |
my $use_syspref_cache = 1; |
538 |
my $use_syspref_cache = 1; |
| 542 |
|
539 |
|
| 543 |
sub preference { |
540 |
sub preference { |
| 544 |
my $self = shift; |
541 |
my $self = shift; |
| 545 |
my $var = shift; # The system preference to return |
542 |
my $var = shift; # The system preference to return |
| 546 |
|
543 |
|
| 547 |
if ($use_syspref_cache && exists $sysprefs{lc $var}) { |
544 |
# We cache for 30 seconds, after that sysprefs are expired from the cache. |
| 548 |
return $sysprefs{lc $var}; |
545 |
# This is for persistent environments like Plack. |
|
|
546 |
my $now = time; |
| 547 |
my $cache_oldest = $now - 30; |
| 548 |
if ($use_syspref_cache && exists $syspref_cache{lc $var}) { |
| 549 |
# The cache contains an arrayref, first entry is the time it was |
| 550 |
# stored, the second is the value. |
| 551 |
my $cached_value = $syspref_cache{lc $var}; |
| 552 |
return $cached_value->[1] if ($cached_value->[0] > $cache_oldest); |
| 549 |
} |
553 |
} |
| 550 |
|
554 |
|
| 551 |
my $dbh = C4::Context->dbh or return 0; |
555 |
my $dbh = C4::Context->dbh or return 0; |
|
Lines 564-570
sub preference {
Link Here
|
| 564 |
$value = $dbh->selectrow_array( $sql, {}, lc $var ); |
568 |
$value = $dbh->selectrow_array( $sql, {}, lc $var ); |
| 565 |
} |
569 |
} |
| 566 |
|
570 |
|
| 567 |
$sysprefs{lc $var} = $value; |
571 |
$syspref_cache{lc $var} = [$now, $value]; |
| 568 |
return $value; |
572 |
return $value; |
| 569 |
} |
573 |
} |
| 570 |
|
574 |
|
|
Lines 615-621
will not be seen by this process.
Link Here
|
| 615 |
=cut |
619 |
=cut |
| 616 |
|
620 |
|
| 617 |
sub clear_syspref_cache { |
621 |
sub clear_syspref_cache { |
| 618 |
%sysprefs = (); |
622 |
%syspref_cache= (); |
| 619 |
} |
623 |
} |
| 620 |
|
624 |
|
| 621 |
=head2 set_preference |
625 |
=head2 set_preference |
|
Lines 646-652
sub set_preference {
Link Here
|
| 646 |
" ); |
650 |
" ); |
| 647 |
|
651 |
|
| 648 |
if($sth->execute( $var, $value )) { |
652 |
if($sth->execute( $var, $value )) { |
| 649 |
$sysprefs{$var} = $value; |
653 |
$syspref_cache{$var} = [time, $value]; |
| 650 |
} |
654 |
} |
| 651 |
$sth->finish; |
655 |
$sth->finish; |
| 652 |
} |
656 |
} |
| 653 |
- |
|
|