Help - Search - Member List - Calendar
Full Version: SDK 1.5f, IPB et le cache
IPBR-FR > Entraide > Forums dédiés aux mods majeures > IPB SDK
LLaumgui
Salut,

Je me livre actuellement à l'analyse de mes requêtes MySQL et je viens de remarquer ces 2 requêtes :
SQL
SELECT * FROM ibf_cache_store WHERE cs_key IN ( 'banfilters', 'settings', 'group_cache', 'systemvars', 'skin_id_cache', 'forum_cache', 'moderators', 'stats', 'languages' )

SQL
SELECT cs_value FROM ibf_cache_store WHERE cs_key = "stats"

Je me lance dans une petite analyse et me rend compte que le cache IPB (ibforums']->cache;) ne se retrouve pas dans le cache du SDK...
Je pense que rajouter
CODE
$this->_cache = $GLOBALS['ibforums']->cache;
voir
CODE
$this->_cache =& $GLOBALS['ibforums']->cache;
après
CODE
ipb_set_cache();
peut arranger les choses car cela alimente mon cache.

Cependant, les noms des indexs ne correspondent pas entre IPB et SDK... Bref, la gestion du cache sous le SDK est pas glop smile.gif.
LLaumgui
Bon, après une étude approfondie des données dans le cache IPBSDK et de celle dans le cache de IPB, je me rend compte qu'elle sont différentes.
Donc ne tennait pas compte de mon premier post.
Par contre, j'ai modifié ma fonction get_board_stats() pour qu'elle puise dans le cache IPB et non pas IPBSDK --> 1 requête de moin smile.gif.

CODE
/**
 * Obtenir les statistiques de mon forums.
 * Modification : Liaison avec le cache IPB au lieu de celui du SDK.
 * @author Guillaume Kulakowski <llaumgui_AT_xperience-fr.net>
 * @author Pita (conversion to 2.0) <peter@randomnity.com>
 * @author Cow <khlo@global-centre.com>
 * @return array Board Statistics
 */
function get_board_stats() {

 // 1 : Je cherche dans le cache IPB :
 if ( !empty($GLOBALS['ibforums']->cache['stats']) && is_array($GLOBALS['ibforums']->cache['stats']) )
  { return $GLOBALS['ibforums']->cache['stats']; }  
 else
  {
   $this->DB->query ('SELECT cs_value FROM ibf_cache_store WHERE cs_key = "stats"');
   $row          = $this->DB->fetch_row();
   $stats         = unserialize(stripslashes($row['cs_value']));
   $GLOBALS['ibforums']->cache['stats']  =  $stats;
   return $stats;
  }
}
prolag
Il y a quoi de differents au niveau du cache donc ? etre ipsdk et IPB ?
LLaumgui
ipbSDK utilise sont propres caches, bien qu'il instancie le cache IPB !
Le pire, c'est qu'il y a redondance d'informations ! Par exemples

$SDK->_cache['get_board_stats'][1] = $GLOBALS['ibforums']->cache['stats']

Donc faire :
CODE
$this->_cache = $GLOBALS['ibforums']->cache;

ou :
CODE
foreach( $GLOBALS['ibforums']->cache as $key => $value )
{ $SDK->_cache[$key][1] = $value; }
Ne sert a rien !!! Car les clef ($key) sont pas pareil !!!
Donc j'ai redéfinie comme expliqué sur mon blog, les fonctions pouvant utiliser le cache IPB pour qu'elle le fasse et non pas selui du SDK.
LLaumgui
J'ai trouvais pire !!! 5 requêtes de gagner pour les guests !!!

http://ipb2.ipbr-fr.com/index.php?showtopi...findpost&p=5080
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.