Valider e2fd5cb8 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Test d'une methode de comptage alternative plus rapide en SQLite

Pour valider la methode, on la joue en parallele de l'existante, on log la comparaison, et on alerte en cas d'ecart (var_dump et log)
A tester/valider avant nettoyage et report
parent 0540664e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+19 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -542,10 +542,29 @@ function spip_sqlite_count($r, $serveur = '', $requeter = true){
		// (link,requete) a compter
		if (is_array($r->spipSqliteRowCount)){
			list($link,$query) = $r->spipSqliteRowCount;
			// methode 1
			spip_timer();
			$l = $link->query($query);
			$i = 0;
			while ($l->fetch()) $i++;
			$r->spipSqliteRowCount = $i;
			$db = "$i (".spip_timer().") | ";
			// methode 2
			spip_timer();
			// pas de order by pour compter !
			$query = preg_replace(",ORDER BY .*(LIMIT|HAVING|$),Uims","\\1",$query);
			$query = "SELECT count(*) as zzzzsqlitecount FROM ($query)";
			$l = $link->query($query);
			$i = 0;
			if ($l AND $z = $l->fetch())
				$i = $z['zzzzsqlitecount'];
			$db .= "$i (".spip_timer().")";
			if ($i!=$r->spipSqliteRowCount){
				echo "Erreur comptage par methode 2 : <tt>$query</tt>";
				var_dump($db);
				spip_log("Erreur comptage par methode 2 $db : $query","sqlitecounterr."._LOG_ERREUR);
			}
			spip_log("$db","sqlitecount");
		}
		if (isset($r->spipSqliteRowCount)){
			// Ce compte est faux s'il y a des limit dans la requete :(