Manuel:LinkBatch.php

This page is a translated version of the page Manual:LinkBatch.php and the translation is 100% complete.

Description

Quand MédiaWiki génère une page, il doit passer par tous les liens dans la page pour vérifier si ils existent. S'ils n'existent pas, une classe "nouveau" est ajoutée à la balise d'ancrage pour qu'il soit affiché comme un lien rouge. Si la page comporte beaucoup de liens, cela peut devenir un processus coûteux qui ralentit le rendu de la page. Pour éliminer ce problème, la classe LinkCache a été créée. Un objet LinkCache contient l'information en cache à propos de toutes les pages ayant un lien à une source (d'habitude une page). La génération du LinkCache lui-même reste cependant coûteuse, si chaque page liée est testée séparément. Pour contourner ce problème, la classe LinkBatch peut être utilisée. La classe LinkBatch autorise toutes les pages à êtres ajoutées à une requête groupée pour que un seul appel à la base de donnée soit nécessaire.

Utilisation

Pour utiliser LinkBatch sur votre page, d'abord instanciez un nouvel objet LinkBatchː

$batch = $this->linkBatchFactory->newLinkBatch();

Ceci assume que vous utilisez Dependency Injection , et que le LinkBatchFactory a été injecté dans la classe.

Ensuite, vous devriez vous enregistrer comme l'appeleur du LinkBatch pour que la requête à la base de données soit traçable jusqu'à vous.

$batch->setCaller( __METHOD__ );

Ensuite, ajouté chaque page reliée au groupe. Il y a maintenant deux façons de faire ceciː avec l'objet LinkTarget de la page reliée, ou avec son espace de noms et sa chaîne de titre .

En utilisant l'objet LinkTargetː

$batch->addObj( $linkTarget );

En utilisant l'espace de noms et la chaîne de titreː

$batch->add( $namespace, $title );

Une fois que toutes les pages reliées sont ajoutées au groupe, utilisez la fonction execute pour générer et ranger les LinkCacheː

$batch->execute();

Si vous êtes déjà sûr avant que les liens que vous créez existent, vous pouvez empêcher que on vérifie leur existence en utilisant la fonction LinkRenderer::makeKnownLink().

Ceci élimine le besoin de LinkCache.