diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 83b72d88f50..76f537373b0 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -23,7 +23,7 @@ * \brief File for Tanslate class * \author Eric Seigne * \author Laurent Destailleur - * \version $Id: translate.class.php,v 1.50 2011/08/15 23:17:14 eldy Exp $ + * \version $Id: translate.class.php,v 1.51 2011/08/17 21:41:24 eldy Exp $ */ @@ -35,17 +35,17 @@ class Translate { var $dir; // Directories that contains /langs subdirectory - var $defaultlang; // Langue courante en vigueur de l'utilisateur + var $defaultlang; // Current language for current user var $direction = 'ltr'; // Left to right or Right to left - - var $tab_translate=array(); // Tableau des traductions - var $tab_loaded=array(); // Array to store result after loading each language file - - var $cache_labels=array(); // Cache for labels - var $charset_inputfile=array(); // To store charset encoding used for language var $charset_output='UTF-8'; // Codage used by "trans" method outputs + var $tab_translate=array(); // Array of all translations key=>value + var $tab_loaded=array(); // Array to store result after loading each language file + + var $cache_labels=array(); // Cache for labels return by trans method + + /** * Constructor @@ -62,7 +62,6 @@ class Translate { } - /** * Set accessor for this->defaultlang * @@ -220,7 +219,7 @@ class Translate { // Using a memcached server if (! empty($conf->memcached->enabled) && ! empty($conf->global->MEMCACHED_SERVER)) { - $usecachekey=$newdomain.'_'.$langofdir.'_'.$file_lang; + $usecachekey=$newdomain.'_'.$langofdir.'_'.md5($file_lang); // Should not contains special chars } // Using cache with shmop. Speed gain: 40ms - Memory overusage: 200ko (Size of session cache file) else if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_SPEED & 0x02)) @@ -268,7 +267,7 @@ class Translate { } elseif ($key == 'DIRECTION') // This is to declare direction of language { - if ($alt < 2 || empty($this->tab_translate[$key])) // We load direction only for primary files or if not yer load + if ($alt < 2 || empty($this->tab_translate[$key])) // We load direction only for primary files or if not yet loaded { $this->tab_translate[$key]=$value; @@ -279,7 +278,7 @@ class Translate { else { // On stocke toujours dans le tableau Tab en UTF-8 - if (empty($this->charset_inputfile[$newdomain]) || $this->charset_inputfile[$newdomain] == 'ISO-8859-1') $value=utf8_encode($value); + if (! empty($this->charset_inputfile[$newdomain]) && $this->charset_inputfile[$newdomain] == 'ISO-8859-1') $value=utf8_encode($value); //print 'XX'.$key; $this->tab_translate[$key]=$value; @@ -296,11 +295,16 @@ class Translate { if ($usecachekey && sizeof($tabtranslatedomain)) { require_once(DOL_DOCUMENT_ROOT ."/lib/memory.lib.php"); - $size=dol_setcache($usecachekey,$tabtranslatedomain); + $ressetcache=dol_setcache($usecachekey,$tabtranslatedomain); + if ($ressetcache < 0) + { + $error='Failed to set cache for usecachekey='.$usecachekey.' result='.$ressetcache; + dol_syslog($error, LOG_ERR); + } } //exit; - if (empty($conf->global->MAIN_FORCELANGDIR)) break; // Break loop on each root dir. If a module has forced, we do not stop loop. + if (empty($conf->global->MAIN_FORCELANGDIR)) break; // Break loop on each root dir. If a module has forced dir, we do not stop loop. } } } diff --git a/htdocs/lib/memory.lib.php b/htdocs/lib/memory.lib.php index 49d7f5ff053..1c13d2be845 100644 --- a/htdocs/lib/memory.lib.php +++ b/htdocs/lib/memory.lib.php @@ -19,7 +19,7 @@ /** * \file htdocs/lib/memory.lib.php * \brief Set of function for memory/cache management - * \version $Id: memory.lib.php,v 1.11 2011/07/31 23:25:11 eldy Exp $ + * \version $Id: memory.lib.php,v 1.12 2011/08/17 21:39:08 eldy Exp $ */ global $shmkeys,$shmoffset; @@ -34,10 +34,11 @@ $shmoffset=100; /** - * \brief Save data into a memory area shared by all users, all sessions on server - * \param $memoryid Memory id of shared area - * \param $data Data to save - * \return int <0 if KO, Nb of bytes written if OK + * Save data into a memory area shared by all users, all sessions on server + * + * @param $memoryid Memory id of shared area + * @param $data Data to save + * @return int <0 if KO, Nb of bytes written if OK */ function dol_setcache($memoryid,$data) { @@ -52,7 +53,8 @@ function dol_setcache($memoryid,$data) $tmparray=explode(':',$conf->global->MEMCACHED_SERVER); $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); //$m->setOption(Memcached::OPT_COMPRESSION, false); - $m->add($memoryid,$data); + //print "Add memoryid=".$memoryid; + $m->add($memoryid,$data); // This fails if key already exists $rescode=$m->getResultCode(); if ($rescode == 0) { @@ -70,7 +72,7 @@ function dol_setcache($memoryid,$data) $tmparray=explode(':',$conf->global->MEMCACHED_SERVER); $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); //$m->setOption(Memcached::OPT_COMPRESSION, false); - $result=$m->add($memoryid,$data); + $result=$m->add($memoryid,$data); // This fails if key already exists if ($result) { return sizeof($data); @@ -90,9 +92,10 @@ function dol_setcache($memoryid,$data) } /** - * \brief Read a memory area shared by all users, all sessions on server - * \param $memoryid Memory id of shared area - * \return int <0 if KO, data if OK + * Read a memory area shared by all users, all sessions on server + * + * @param $memoryid Memory id of shared area + * @return int <0 if KO, data if OK */ function dol_getcache($memoryid) { @@ -106,9 +109,10 @@ function dol_getcache($memoryid) $tmparray=explode(':',$conf->global->MEMCACHED_SERVER); $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); //$m->setOption(Memcached::OPT_COMPRESSION, false); + //print "Get memoryid=".$memoryid; $data=$m->get($memoryid); $rescode=$m->getResultCode(); - //print "memoryid=".$memoryid." - rescode=".$rescode." - date=".sizeof($data)."\n
"; + //print "memoryid=".$memoryid." - rescode=".$rescode." - data=".sizeof($data)."\n
"; //var_dump($data); if ($rescode == 0) { @@ -127,7 +131,7 @@ function dol_getcache($memoryid) $result=$m->addServer($tmparray[0], $tmparray[1]?$tmparray[1]:11211); //$m->setOption(Memcached::OPT_COMPRESSION, false); $data=$m->get($memoryid); - //print "memoryid=".$memoryid." - rescode=".$rescode." - date=".sizeof($data)."\n
"; + //print "memoryid=".$memoryid." - rescode=".$rescode." - data=".sizeof($data)."\n
"; //var_dump($data); if ($data) {