Bugzilla – Attachment 3514 Details for
Bug 6000
Performance enhancements for C4::Context and C4::Languages
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Proposed Patch
0001-Bug-6000-Performance-enhancing.patch (text/plain), 5.83 KB, created by
Chris Cormack
on 2011-03-29 23:04:12 UTC
(
hide
)
Description:
Proposed Patch
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2011-03-29 23:04:12 UTC
Size:
5.83 KB
patch
obsolete
>From 19fc992a5b9f0d26b000fe7f541909bfc68e035f Mon Sep 17 00:00:00 2001 >From: Henri-Damien LAURENT <henridamien.laurent@biblibre.com> >Date: Fri, 26 Mar 2010 12:21:40 +0100 >Subject: [PATCH] Bug 6000 : Performance enhancing > >C4::Context.pm >Loads all systempreferences at once >And uses Memcached to cache them > >C4::Languages >Using List::MoreUtils >Memcaching get_langage_description >--- > C4/Context.pm | 27 ++++++++++++++++++++++----- > C4/Languages.pm | 37 +++++++++++++++++++------------------ > 2 files changed, 41 insertions(+), 23 deletions(-) > >diff --git a/C4/Context.pm b/C4/Context.pm >index 484d4e1..c6ece31 100644 >--- a/C4/Context.pm >+++ b/C4/Context.pm >@@ -20,6 +20,21 @@ use strict; > use warnings; > use vars qw($VERSION $AUTOLOAD $context @context_stack); > >+eval { >+ my $servers = C4::Context->config('memcached_servers'); >+ if ($servers) { >+ require Memoize::Memcached; >+ import Memoize::Memcached qw(memoize_memcached); >+ >+ my $memcached = { >+ servers => [ $servers ], >+ key_prefix => C4::Context->config('memcached_namespace') || 'koha', >+ }; >+ >+ memoize_memcached('preference', memcached => $memcached, expire_time => 600000); #cache for 10 minutes >+ } >+}; >+ > BEGIN { > if ($ENV{'HTTP_USER_AGENT'}) { > require CGI::Carp; >@@ -79,7 +94,8 @@ BEGIN { > } > } # else there is no browser to send fatals to! > $VERSION = '3.00.00.036'; >-} >+}; >+ > > use DBI; > use ZOOM; >@@ -88,6 +104,7 @@ use C4::Boolean; > use C4::Debug; > use POSIX (); > >+ > =head1 NAME > > C4::Context - Maintain and manipulate the context of a Koha script >@@ -472,12 +489,12 @@ sub preference { > > # Look up systempreferences.variable==$var > my $sql = <<'END_SQL'; >- SELECT value >+ SELECT variable, value > FROM systempreferences >- WHERE variable=? >- LIMIT 1 > END_SQL >- $sysprefs{$var} = $dbh->selectrow_array( $sql, {}, $var ); >+ my $sysprefs_arrayref; >+ $sysprefs_arrayref = $dbh->selectcol_arrayref( $sql, { Columns=>[1,2] }); >+ %sysprefs= @$sysprefs_arrayref; > return $sysprefs{$var}; > } > >diff --git a/C4/Languages.pm b/C4/Languages.pm >index fd16596..381b863 100644 >--- a/C4/Languages.pm >+++ b/C4/Languages.pm >@@ -23,6 +23,7 @@ use strict; > #use warnings; FIXME - Bug 2505 > use Carp; > use C4::Context; >+use List::MoreUtils qw/any/; > use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG); > > eval { >@@ -36,9 +37,10 @@ eval { > key_prefix => C4::Context->config('memcached_namespace') || 'koha', > }; > >- memoize_memcached('getTranslatedLanguages', memcached => $memcached, expire_time => 600); #cache for 10 minutes >- memoize_memcached('getFrameworkLanguages' , memcached => $memcached, expire_time => 600); >- memoize_memcached('getAllLanguages', memcached => $memcached, expire_time => 600); >+ memoize_memcached('getTranslatedLanguages', memcached => $memcached, expire_time => 600000); #cache for 10 minutes >+ memoize_memcached('getFrameworkLanguages' , memcached => $memcached, expire_time => 600000); >+ memoize_memcached('getAllLanguages', memcached => $memcached, expire_time => 600000); >+ memoize_memcached('language_get_description', memcached => $memcached, expire_time => 600000); > } > }; > >@@ -94,17 +96,11 @@ sub getFrameworkLanguages { > closedir MYDIR; > > # pull out all data for the dir names that exist >- for my $dirname (@listdir) { >- for my $language_set (@$all_languages) { >- >- if ($dirname eq $language_set->{language_code}) { >- push @languages, { >- 'language_code'=>$dirname, >- 'language_description'=>$language_set->{language_description}, >- 'native_descrition'=>$language_set->{language_native_description} } >- } >- } >- } >+ my @languages=grep { >+ my $language=$_; >+ any {$language->{languagecode} eq $_ >+ } @listdir >+ } @$all_languages; > return \@languages; > } > >@@ -130,7 +126,8 @@ sub getTranslatedLanguages { > my @enabled_languages; > > if ($interface && $interface eq 'opac' ) { >- @enabled_languages = split ",", C4::Context->preference('opaclanguages'); >+ my $languages= C4::Context->preference('opaclanguage') ||'en'; >+ @enabled_languages = split ",", $languages; > $htdocs = C4::Context->config('opachtdocs'); > if ( $theme and -d "$htdocs/$theme" ) { > (@languages) = _get_language_dirs($htdocs,$theme); >@@ -142,7 +139,8 @@ sub getTranslatedLanguages { > } > } > elsif ($interface && $interface eq 'intranet' ) { >- @enabled_languages = split ",", C4::Context->preference('language'); >+ my $languages= C4::Context->preference('language') ||'en'; >+ @enabled_languages = split ",", $languages; > $htdocs = C4::Context->config('intrahtdocs'); > if ( $theme and -d "$htdocs/$theme" ) { > @languages = _get_language_dirs($htdocs,$theme); >@@ -154,7 +152,8 @@ sub getTranslatedLanguages { > } > } > else { >- @enabled_languages = split ",", C4::Context->preference('opaclanguages'); >+ my $languages= C4::Context->preference('opaclanguage') ||'en'; >+ @enabled_languages = split ",", $languages; > my $htdocs = C4::Context->config('intrahtdocs'); > foreach my $theme ( _get_themes('intranet') ) { > push @languages, _get_language_dirs($htdocs,$theme); >@@ -184,8 +183,10 @@ Returns a reference to an array of hashes: > > =cut > >+my @languages_loop; >+ > sub getAllLanguages { >- my @languages_loop; >+ return \@languages_loop if scalar(@languages_loop); > my $dbh=C4::Context->dbh; > my $current_language = shift || 'en'; > my $sth = $dbh->prepare('SELECT * FROM language_subtag_registry WHERE type=\'language\''); >-- >1.7.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6000
:
3514
|
3515
|
7037