Пример #1
0
/**
 * 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);
}
Пример #2
0
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);

}