/** * Creer le fichier cache * Passage par reference de $page par souci d'economie * * http://code.spip.net/@creer_cache * * @param array $page * @param string $chemin_cache * @return void */ function creer_cache(&$page, &$chemin_cache) { // Ne rien faire si on est en preview, debug, ou si une erreur // grave s'est presentee (compilation du squelette, MySQL, etc) // le cas var_nocache ne devrait jamais arriver ici (securite) // le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable if (defined('_VAR_NOCACHE') and _VAR_NOCACHE or defined('spip_interdire_cache')) { return; } // Si la page c1234 a un invalideur de session 'zz', sauver dans // 'tmp/cache/MD5(chemin_cache)_zz' if (isset($page['invalideurs']) and isset($page['invalideurs']['session'])) { // on verifie que le contenu du chemin cache indique seulement // "cache sessionne" ; sa date indique la date de validite // des caches sessionnes if (!($tmp = lire_cache($chemin_cache))) { spip_log('Creation cache sessionne ' . $chemin_cache); $tmp = array('invalideurs' => array('session' => ''), 'lastmodified' => $_SERVER['REQUEST_TIME']); ecrire_cache($chemin_cache, $tmp); } $chemin_cache = generer_nom_fichier_cache(array("chemin_cache" => $chemin_cache), array("session" => $page['invalideurs']['session'])); } // ajouter la date de production dans le cache lui meme // (qui contient deja sa duree de validite) $page['lastmodified'] = $_SERVER['REQUEST_TIME']; // compresser le contenu si besoin $pagez = gzip_page($page); // signer le contenu $pagez['sig'] = cache_signature($pagez); // l'enregistrer, compresse ou non... $ok = ecrire_cache($chemin_cache, $pagez); spip_log((_IS_BOT ? "Bot:" : "") . "Creation du cache {$chemin_cache} pour " . $page['entetes']['X-Spip-Cache'] . " secondes" . ($ok ? '' : ' (erreur!)'), _LOG_INFO_IMPORTANTE); // Inserer ses invalideurs include_spip('inc/invalideur'); maj_invalideurs($chemin_cache, $page); }
function creer_cache(&$page, &$chemin_cache) { // Ne rien faire si on est en preview, debug, ou si une erreur // grave s'est presentee (compilation du squelette, MySQL, etc) // le cas var_nocache ne devrait jamais arriver ici (securite) // le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable if ((isset($GLOBALS['var_nocache']) AND $GLOBALS['var_nocache']) OR defined('spip_interdire_cache')) return; // Si la page c1234 a un invalideur de session 'zz', sauver dans // 'tmp/cache/MD5(chemin_cache)_zz' if (isset($page['invalideurs']) AND isset($page['invalideurs']['session'])) { // on verifie que le contenu du chemin cache indique seulement // "cache sessionne" ; sa date indique la date de validite // des caches sessionnes if (!lire_fichier(_DIR_CACHE . $chemin_cache, $tmp) OR !$tmp = @unserialize($tmp)) { spip_log('Creation cache sessionne '.$chemin_cache); $tmp = array( 'invalideurs' => array('session' => ''), 'lastmodified' => time() ); ecrire_fichier(_DIR_CACHE . $chemin_cache, serialize($tmp)); } $chemin_cache .= '_'.$page['invalideurs']['session']; } // ajouter la date de production dans le cache lui meme // (qui contient deja sa duree de validite) $page['lastmodified'] = time(); // l'enregistrer, compresse ou non... $ok = ecrire_fichier(_DIR_CACHE . $chemin_cache, serialize(gzip_page($page))); spip_log("Creation du cache $chemin_cache pour " . $page['entetes']['X-Spip-Cache']." secondes". ($ok?'':' (erreur!)')); // Inserer ses invalideurs include_spip('inc/invalideur'); maj_invalideurs($chemin_cache, $page); }