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

Certaines opérations n'appelaient volontairement pas ecrire_metaS pour éviter...

Certaines opérations  n'appelaient volontairement pas ecrire_metaS pour éviter de refabriquer le fichier de metas plusieurs fois (en particulier la grosse boucle  dans l'importation). Pour revenir exactement au meme comportement, On introduit une statique dans ecrire_meta et effacer_meta pour ne faire le Touch qu'une fois (mais il est probable qu'on tapait dans le cache disque de toutes façons).
parent 99b2d780
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -281,6 +281,7 @@ function import_tables($request, $dir) { ...@@ -281,6 +281,7 @@ function import_tables($request, $dir) {
function import_init_meta($tag, $atts, $charset, $request) function import_init_meta($tag, $atts, $charset, $request)
{ {
$version_archive = $atts['version_archive']; $version_archive = $atts['version_archive'];
$insert = $request['insertion'] ;
ecrire_meta('attributs_archive_restauration', serialize($atts),'non'); ecrire_meta('attributs_archive_restauration', serialize($atts),'non');
ecrire_meta('version_archive_restauration', $version_archive,'non'); ecrire_meta('version_archive_restauration', $version_archive,'non');
ecrire_meta('tag_archive_restauration', $tag,'non'); ecrire_meta('tag_archive_restauration', $tag,'non');
...@@ -302,12 +303,14 @@ function import_init_meta($tag, $atts, $charset, $request) ...@@ -302,12 +303,14 @@ function import_init_meta($tag, $atts, $charset, $request)
// faire la conversion de charset en php :( // faire la conversion de charset en php :(
effacer_meta('restauration_charset_sql_connexion'); # precaution effacer_meta('restauration_charset_sql_connexion'); # precaution
spip_log("charset de restauration inconnu de sql : $charset"); spip_log("charset de restauration inconnu de sql : $charset");
if ($request['insertion']) if ($insert)
ecrire_meta('charset_insertion', $charset,'non'); ecrire_meta('charset_insertion', $charset,'non');
else ecrire_meta('charset_restauration', $charset,'non'); else ecrire_meta('charset_restauration', $charset,'non');
} }
} }
spip_log("Debut de l'importation (charset: $charset, format: $version_archive)" . ($request['insertion'] ? " insertion $i" : ''));
$i = $insert ? ("insertion $insert") : '';
spip_log("Debut de l'importation (charset: $charset, format: $version_archive) $i");
return $version_archive; return $version_archive;
} }
......
...@@ -66,14 +66,17 @@ function effacer_meta($nom) { ...@@ -66,14 +66,17 @@ function effacer_meta($nom) {
// section critique sur le cache: // section critique sur le cache:
// l'invalider avant et apres la MAJ de la BD // l'invalider avant et apres la MAJ de la BD
// c'est un peu moints bien qu'un vrai verrou mais ca suffira // c'est un peu moints bien qu'un vrai verrou mais ca suffira
@touch(_FILE_META,0); // et utiliser une statique pour eviter des acces disques a repetition
static $touch = true;
if ($touch) {@touch(_FILE_META, 0);}
sql_delete("spip_meta", "nom='$nom'"); sql_delete("spip_meta", "nom='$nom'");
@touch(_FILE_META,0); if ($touch) {@touch(_FILE_META, 0); $touch = false;}
} }
// http://doc.spip.org/@ecrire_meta // http://doc.spip.org/@ecrire_meta
function ecrire_meta($nom, $valeur, $importable = NULL) { function ecrire_meta($nom, $valeur, $importable = NULL) {
static $touch = true;
if (!$nom) return; if (!$nom) return;
$GLOBALS['meta'][$nom] = $valeur; $GLOBALS['meta'][$nom] = $valeur;
$res = spip_query("SELECT impt,valeur FROM spip_meta WHERE nom=" . _q($nom)); $res = spip_query("SELECT impt,valeur FROM spip_meta WHERE nom=" . _q($nom));
...@@ -84,7 +87,7 @@ function ecrire_meta($nom, $valeur, $importable = NULL) { ...@@ -84,7 +87,7 @@ function ecrire_meta($nom, $valeur, $importable = NULL) {
// 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;
// cf effacer pour le double touch // cf effacer pour le double touch
@touch(_FILE_META, 0); if ($touch) {@touch(_FILE_META, 0);}
if ($res) { if ($res) {
$r = ($importable === NULL) ? '' $r = ($importable === NULL) ? ''
: (", impt=" . _q($importable)); : (", impt=" . _q($importable));
...@@ -93,7 +96,7 @@ function ecrire_meta($nom, $valeur, $importable = NULL) { ...@@ -93,7 +96,7 @@ function ecrire_meta($nom, $valeur, $importable = NULL) {
$r = array('nom' => $nom, 'valeur' => $valeur); $r = array('nom' => $nom, 'valeur' => $valeur);
if ($importable) $r['impt'] = $importable; if ($importable) $r['impt'] = $importable;
sql_insertq('spip_meta', $r); sql_insertq('spip_meta', $r);
@touch(_FILE_META, 0);
} }
if ($touch) {@touch(_FILE_META, 0); $touch = false;}
} }
?> ?>
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