CVS: spip/ecrire inc_index.php3, 1.41, 1.42 inc_sites.php3, 1.61, 1.62 inc_statistiques.php3, 1.76, 1.77 inc_version.php3, 1.264, 1.265 index.php3, 1.81, 1.82 statistiques_visites.php3, 1.45, 1.46

Update of /home/spip-cvs/spip/ecrire
In directory miel:/tmp/cvs-serv17112/ecrire

Modified Files:
  inc_index.php3 inc_sites.php3 inc_statistiques.php3
  inc_version.php3 index.php3 statistiques_visites.php3
Log Message:
gros boulot sur les lock, les timeout, les acces concurrents
mecanisme de "allez y mollo" pour l'hébergeur (surcharge-mysql)

Index: inc_index.php3

RCS file: /home/spip-cvs/spip/ecrire/inc_index.php3,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- inc_index.php3 13 Jun 2003 14:46:44 -0000 1.41
+++ inc_index.php3 28 Sep 2003 14:01:35 -0000 1.42
@@ -210,30 +210,37 @@
}

-function indexer_article($id_article, $forcer_reset = true, $full = true) {
- return indexer_objet('article', $id_article, $forcer_reset, $full);
+// API pour l'espace prive
+function marquer_indexer ($objet, $id_objet) {
+ global $dir_ecrire;
+ $fichier_index = $dir_ecrire.'data/.index';
+ if (!$f = @fopen($fichier_index, 'a')) {
+ spip_log ("impossible d'ecrire dans $fichier_index !");
+ @unlink ($fichier_index); // on essaie de forcer
+ $f = @fopen($fichier_index, 'a');
+ }
+ spip_log ("demande indexation $objet $id_objet");
+ fputs($f, "$objet $id_objet 1"); // 1 = forcer reindexation
+ fclose($f);
}
-
-function indexer_auteur($id_auteur, $forcer_reset = true, $full = true) {
- return indexer_objet('auteur', $id_auteur, $forcer_reset, $full);
+function indexer_article($id_article) {
+ marquer_indexer('article', $id_article);
}
-
-function indexer_breve($id_breve, $forcer_reset = true, $full = true) {
- return indexer_objet('breve', $id_breve, $forcer_reset, $full);
+function indexer_auteur($id_auteur) {
+ marquer_indexer('auteur', $id_auteur);
}
-
-function indexer_mot($id_mot, $forcer_reset = true, $full = true) {
- return indexer_objet('mot', $id_mot, $forcer_reset, $full);
+function indexer_breve($id_breve) {
+ marquer_indexer('breve', $id_breve);
}
-
-function indexer_rubrique($id_rubrique, $forcer_reset = true, $full = true) {
- return indexer_objet('rubrique', $id_rubrique, $forcer_reset, $full);
+function indexer_mot($id_mot) {
+ marquer_indexer('mot', $id_mot);
}
-
-function indexer_syndic($id_syndic, $forcer_reset = true, $full = true) {
- return indexer_objet('syndic', $id_syndic, $forcer_reset, $full);
+function indexer_rubrique($id_rubrique) {
+ marquer_indexer('rubrique', $id_rubrique);
+}
+function indexer_syndic($id_syndic) {
+ marquer_indexer('syndic', $id_syndic);
}
-

function executer_une_indexation_syndic() {
   $visiter_sites = lire_meta("visiter_sites");

Index: inc_sites.php3

RCS file: /home/spip-cvs/spip/ecrire/inc_sites.php3,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- inc_sites.php3 28 Aug 2003 21:15:41 -0000 1.61
+++ inc_sites.php3 28 Sep 2003 14:01:35 -0000 1.62
@@ -154,7 +154,7 @@
     $moderation = 'publie'; // en ligne sans validation

   // Section critique : n'autoriser qu'une seule syndication simultanee pour un site donne
- if (!spip_get_lock($url_syndic)) return;
+ if (!timeout("syndication $url_syndic")) return;

   include_ecrire("inc_filtres.php3");
   spip_query("UPDATE spip_syndic SET syndication='$statut', date_syndic=NOW() WHERE id_syndic='$now_id_syndic'");

Index: inc_statistiques.php3

RCS file: /home/spip-cvs/spip/ecrire/inc_statistiques.php3,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -d -r1.76 -r1.77
--- inc_statistiques.php3 27 Sep 2003 15:42:32 -0000 1.76
+++ inc_statistiques.php3 28 Sep 2003 14:01:35 -0000 1.77
@@ -82,8 +82,7 @@
     {
       $kw_referer_host = $arr_engines[$cnt][0];
       $keywords = ereg('=', $arr_engines[$cnt][1])
- ? ${str_replace('=', '', $arr_engines[$cnt][1])}
- : $lvm_directory; // c'est quoi ce truc ??
+ ? ${str_replace('=', '', $arr_engines[$cnt][1])}:'';
       if ((($kw_referer_host == "Google" && ereg('[io]e=UTF-8', $query))
         || ($kw_referer_host == "AOL" && !ereg('enc=iso', $query))
         || ($kw_referer_host == "MSN")

Index: inc_version.php3

RCS file: /home/spip-cvs/spip/ecrire/inc_version.php3,v
retrieving revision 1.264
retrieving revision 1.265
diff -u -d -r1.264 -r1.265
--- inc_version.php3 27 Sep 2003 22:38:17 -0000 1.264
+++ inc_version.php3 28 Sep 2003 14:01:35 -0000 1.265
@@ -806,6 +806,50 @@
}

//
+// Savoir si on peut lancer de gros calculs, et eventuellement poser un lock
+// Resultat : true=vas-y ; false=stop
+//
+function timeout ($lock=false, $action=true, $connect_mysql=true) {
+ static $ok = true;
+ global $db_ok, $dir_ecrire;
+
+ // Fichier lock hebergeur ? (age maxi, 10 minutes)
+ $timeoutfile = $dir_ecrire.'data/surcharge-mysql';
+ if (@file_exists($timeoutfile)
+ AND ((time() - @filemtime($timeoutfile)) < 600)) {
+ spip_debug ("lock hebergeur $timeoutfile");
+ return $ok = false;
+ }
+
+ // Ne rien faire ?
+ if (!$action)
+ return $ok;
+
+ // Base connectee ?
+ if ($connect_mysql) {
+ include_ecrire('inc_connect.php3');
+ if (!$db_ok)
+ return $ok = false;
+
+ // Lock SQL ? (10 secondes)
+ if ($lock) {
+ if (spip_get_lock($lock, 10)) {
+ // C'est bon
+ $ok = false;
+ return true;
+ } else {
+ spip_debug ("lock mysql $lock");
+ return $ok = false;
+ }
+ }
+ }
+
+ // C'est bon
+ $ok = false;
+ return true;
+}
+
+//
// Tests sur le nom du butineur
//
function verif_butineur() {

Index: index.php3

RCS file: /home/spip-cvs/spip/ecrire/index.php3,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- index.php3 25 Sep 2003 00:49:30 -0000 1.81
+++ index.php3 28 Sep 2003 14:01:35 -0000 1.82
@@ -451,16 +451,13 @@
   ecrire_metas();
}

+
//
// Optimisation periodique de la base de donnees
//
-
-$date_opt = $meta['date_optimisation'];
-$date = time();
-
-if (!$bonjour) {
- if ($optimiser == 'oui' || ($date - $date_opt) > 24 * 3600) {
- ecrire_meta("date_optimisation", "$date");
+if (!$bonjour AND timeout('optimisation')) {
+ if ($optimiser == 'oui' || (time() - lire_meta('date_optimisation')) > 24 * 3600) {
+ ecrire_meta("date_optimisation", time());
     ecrire_metas();
     include ("optimiser.php3");
   }

Index: statistiques_visites.php3

RCS file: /home/spip-cvs/spip/ecrire/statistiques_visites.php3,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- statistiques_visites.php3 26 Sep 2003 23:48:16 -0000 1.45
+++ statistiques_visites.php3 28 Sep 2003 14:01:35 -0000 1.46
@@ -4,7 +4,7 @@
include ("inc_statistiques.php3");

-if ($id_article){
+if ($id_article = intval($id_article)){
   $query = "SELECT titre, visites, popularite FROM spip_articles WHERE statut='publie' AND id_article ='$id_article'";
   $result = spip_query($query);

@@ -24,7 +24,7 @@
}

-if($titre) $pourarticle = " "._T('info_pour')." &laquo; $titre &raquo;";
+if ($titre) $pourarticle = " "._T('info_pour')." &laquo; $titre &raquo;";

if ($origine) {
   debut_page(_T('titre_page_statistiques_referers'), "administration", "statistiques");
@@ -269,7 +269,7 @@
       $decal ++;
       $tab_moyenne[$decal] = $value;
     
- //inserer des jours vides si pas d'entrees
+ // Inserer des jours vides si pas d'entrees
       if ($jour_prec > 0) {
         $ecart = floor(($key-$jour_prec)/(3600*24)-1);
   
@@ -603,7 +603,7 @@
   
   echo "<p><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
   while ($row = spip_fetch_array($result)) {
- $referer = $row['referer'];
+ $referer = interdire_scripts($row['referer']);
     $visites = $row[$vis];
     $tmp = "";
     $aff = "";
@@ -670,14 +670,14 @@
         echo "</li>";
       }
     }
+ echo "</ul>";

- // le lien pour en afficher "plus"
+ // Le lien pour en afficher "plus"
     if (spip_num_rows($result) == $limit) {
       $lien = $clean_link;
       $lien->addVar('limit',$limit+200);
- echo "<p /><li><a href='".$lien->getUrl()."'>+++</a></li>";
+ echo "<p><a href='".$lien->getUrl()."'>+++</a></p>";
     }
- echo "</ul>";
   }

}