Skip to content
Extraits de code Groupes Projets
Valider 12ef44ca rédigé par esj's avatar esj
Parcourir les fichiers

Intégrer le renouvellement de l'alea à l'initialisation des meta pour éviter...

Intégrer le renouvellement de l'alea à l'initialisation des meta pour éviter de refaire deux fois suite le cache dans ce cas là.

Se servir de la différence entre sql_serveur et spip_query (si serveur non configuré, pas d'erreur fatale avec la 2e) pour éviter des redondances de tests, surtout impliquant les lourdeurs autour de FILE_CONNECT et FILE_CONNECT_INS.
parent 62c0d13a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -16,26 +16,34 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -16,26 +16,34 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Recopie dans le tableau PHP global meta, car on en a souvent besoin // Recopie dans le tableau PHP global meta, car on en a souvent besoin
// http://doc.spip.org/@init_metas // http://doc.spip.org/@init_metas
function init_metas() function inc_meta_dist()
{ {
// Lire les meta, en cache si present, valide et lisible // Lire les meta, en cache si present, valide et lisible
if (jeune_fichier(_FILE_META, 1<<24) if ($old = (jeune_fichier(_FILE_META, 1<<24)
AND lire_fichier(_FILE_META, $meta)) AND lire_fichier(_FILE_META, $meta)))
$GLOBALS['meta'] = @unserialize($meta); $GLOBALS['meta'] = @unserialize($meta);
// sinon le refaire. // sinon lire en base
if (!$GLOBALS['meta']) { if (!$GLOBALS['meta']) $old = !lire_metas();
if (lire_metas()) // renouveller l'alea au besoin
ecrire_fichier(_FILE_META, if (test_espace_prive()
serialize($GLOBALS['meta'])); AND $GLOBALS['meta']
AND (time() > _RENOUVELLE_ALEA + @$GLOBALS['meta']['alea_ephemere_date'])) {
include_spip('inc/acces');
renouvelle_alea();
} }
// et refaire le cache si on a pu lire
if (!$old) ecrire_fichier(_FILE_META, serialize($GLOBALS['meta']));
} }
// fonctions aussi appelees a l'install ==> spip_query en premiere requete
// pour eviter l'erreur fatale (serveur non encore configure)
// http://doc.spip.org/@lire_metas // http://doc.spip.org/@lire_metas
function lire_metas() { function lire_metas() {
if (!_FILE_CONNECT && !@file_exists(_FILE_CONNECT_INS .'.php'))
return false;
if ($result = @spip_query("SELECT nom,valeur FROM spip_meta")) {
if ($result = spip_query("SELECT nom,valeur FROM spip_meta")) {
include_spip('base/abstract_sql');
$GLOBALS['meta'] = array(); $GLOBALS['meta'] = array();
while ($row = sql_fetch($result)) while ($row = sql_fetch($result))
$GLOBALS['meta'][$row['nom']] = $row['valeur']; $GLOBALS['meta'][$row['nom']] = $row['valeur'];
...@@ -61,9 +69,10 @@ function ecrire_meta($nom, $valeur, $importable = NULL) { ...@@ -61,9 +69,10 @@ function ecrire_meta($nom, $valeur, $importable = NULL) {
if (!$nom) return; if (!$nom) return;
$GLOBALS['meta'][$nom] = $valeur; $GLOBALS['meta'][$nom] = $valeur;
if (!_FILE_CONNECT && !@file_exists(_FILE_CONNECT_INS .'.php')) return; $res = spip_query("SELECT impt,valeur FROM spip_meta WHERE nom=" . _q($nom));
if (!$res) return;
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
$res = sql_fetsel("impt,valeur", 'spip_meta', "nom=" . _q($nom)); $res = sql_fetch($res);
// conserver la valeur de impt si existante // conserver la valeur de impt si existante
// et ne pas invalider le cache si affectation a l'identique // et ne pas invalider le cache si affectation a l'identique
if ($res AND $valeur == $res['valeur']) return; if ($res AND $valeur == $res['valeur']) return;
......
...@@ -256,7 +256,9 @@ function spip_connect($serveur='') { ...@@ -256,7 +256,9 @@ function spip_connect($serveur='') {
unset($GLOBALS['spip_connect_version']); unset($GLOBALS['spip_connect_version']);
if ($f AND is_readable($f)) include($f); if ($f AND is_readable($f)) include($f);
if (!isset($GLOBALS['db_ok'])) { if (!isset($GLOBALS['db_ok'])) {
if ($install) return false; // fera mieux la prochaine fois
spip_log("spip_connect: serveur $index mal defini dans '$f'."); spip_log("spip_connect: serveur $index mal defini dans '$f'.");
// ne plus reessayer si ce n'est pas l'install
return $connexions[$index]=false; return $connexions[$index]=false;
} }
...@@ -1332,21 +1334,14 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { ...@@ -1332,21 +1334,14 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
// pour le rendre surchargeable, on va provoquer un reecriture // pour le rendre surchargeable, on va provoquer un reecriture
// systematique du noyau ou une baisse de perfs => a etudier) // systematique du noyau ou une baisse de perfs => a etudier)
include_once _DIR_RESTREINT . 'inc/flock.php'; include_once _DIR_RESTREINT . 'inc/flock.php';
include_spip('inc/meta'); // surchargeable, mais difficilement.
// Duree de validite de l'alea pour les cookies et ce qui s'ensuit. // Duree de validite de l'alea pour les cookies et ce qui s'ensuit.
define('_RENOUVELLE_ALEA', 12 * 3600); define('_RENOUVELLE_ALEA', 12 * 3600);
if (_FILE_CONNECT) { // charger les meta si possible et renouveller l'alea au besoin
init_metas(); // charge aussi effacer_meta et ecrire_meta
// Forcer le renouvellement de l'alea $init_meta = charger_fonction('meta', 'inc');
$init_meta();
if (test_espace_prive()
AND (time() > _RENOUVELLE_ALEA + @$GLOBALS['meta']['alea_ephemere_date'])) {
include_spip('inc/acces');
renouvelle_alea();
}
}
// nombre de repertoires depuis la racine // nombre de repertoires depuis la racine
// on compare a l'adresse donnee en meta ; si celle-ci est fausse // on compare a l'adresse donnee en meta ; si celle-ci est fausse
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter