optimiser_base_disparus

Appelé depuis ecrire/genie/optimiser.php, il permet de compléter le nettoyage des objets orphelins, en supprimant des éléments lors des taches périodiques.

$n = pipeline('optimiser_base_disparus', array(
		'args'=>array(
			'attente' => $attente,
			'date' => $mydate),
		'data'=>$n
));

Il reçoit la durée d’attente entre 2 optimisations, ainsi que la date de péremption correspondante. Dans l’argument « data » se stocke le nombre d’éléments supprimés. La fonction optimiser_sansref() permet de gérer la suppression des éléments en donnant 3 arguments :

  • la table,
  • la clé primaire,
  • un résultat de requête SQL contenant uniquement une colonne « id » définissant les identifiants à effacer.

Exemple

Pour supprimer les forums appartenant à une rubrique disparue, le plugin « Forum » l’utilise comme ceci :

function forum_optimiser_base_disparus($flux){
    $n = &$flux['data'];

    # les forums lies a une id_rubrique inexistante
    $res = sql_select("forum.id_forum AS id",
            "spip_forum AS forum
                LEFT JOIN spip_rubriques AS rubriques
                  ON forum.id_rubrique=rubriques.id_rubrique",
            "rubriques.id_rubrique IS NULL
                 AND forum.id_rubrique>0");

    $n+= optimiser_sansref('spip_forum', 'id_forum', $res);

    // [...]

    return $flux;
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français