Manuel:RefreshLinks.php

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

Détails

Le fichier refreshLinks.php est un script de maintenance pour [ré]initialiser les tables pagelinks , categorylinks , et imagelinks . A exécuter si vos catégories sont vides ou ne contiennent pas toutes les pages concernées, si Pages liées ne fonctionne pas mormalement, ou s'il existe tout autre problème avec les liens. De plus ce script purge les liens qui pointent vers les pages qui n'existent pas à partir des tables suivantes : pagelinks, categorylinks, imagelinks, templatelinks , externallinks , iwlinks , langlinks , redirect , page_props

Utilisation

Basique

php maintenance/refreshLinks.php [starting_article]

par exemple, si vous souhaitez que le script commence avec la page dont l'ID est 8 000 :

php maintenance/refreshLinks.php 8000

Avancée

php refreshLinks.php [--conf|--dbpass|--dbuser|--dfn-only|--e|--globals|--help|--m|--new-only|--old-redirects-only|--quiet|--redirects-only|--wiki] <start>

Paramètres

Option/paramètre Description
--dfn-only supprimer les liens uniquement pour les articles qui n'existent pas
--new-only ne concerne que les articles avec une seule modification
--redirects-only ne corrige que les redirections et non tous les liens
--old-redirects-only ne corrige que les redirections qui n'ont pas leur entrée dans la table des redirections
--e <page_id> dernier ID de page à réactualiser
--dfn-chunk-size nombre maximum d'ID existants à vérifier par requête, valeur par défaut 100 000
--namespace ne corrige que les pages de cet espace de noms. L'espace de noms est donné sous la forme de son identifiant numérique.
--category ne corrige que les pages de cette catégorie
--tracking-category ne corrige que les pages de cette catégorie de suivi
--m <max_lag> délai de latence maximum autorisé pour la réplication
--wiki spécifie l'ID du wiki
--help affiche le texte d'aide.
<start> numéro d'article (page_id) auquel commencer
aucun paramètre réactualisera tous les articles

Ceci prend en charge également les options communes.

Exemple de sortie

me@server:/var/www/htdocs/mw/w/maintenance$ php refreshLinks.php
Refreshing redirects table.
Starting from page_id 1 of 309.
100
200
300
Refreshing links tables.
Starting from page_id 1 of 309.
100         
200
300
Retrieving illegal entries from pagelinks... 0..0
Retrieving illegal entries from imagelinks... 0..0
Retrieving illegal entries from categorylinks... 0..0
Retrieving illegal entries from templatelinks... 0..0
Retrieving illegal entries from externallinks... 0..0
Retrieving illegal entries from iwlinks... 0..0
Retrieving illegal entries from langlinks... 0..0
Retrieving illegal entries from redirect... 0..0
Retrieving illegal entries from page_props... 0..0


Eviter les problèmes de mémoire

Il est possible que ce script affiche des problèmes mémoire. Pour éviter cela, vous pouvez borner en définissant le dernier page_id à rafraîchir.

php refreshLinks.php --e 1500

Pour appeler l'ensemble suivant de page_id à actualiser, entrez :

php refreshLinks.php --e 3000 -- 1500

Continuer simplement jusqu'à ce que tous les ID des pages de votre wiki aient été réactualisés.

Si vous oubliez d'indiquer le dernier page_id à actualiser et que le script vient à déborder de la mémoire, il suffit de le relancer avec la dernière sortie page_id comme article de départ par exemple :

php refreshLinks.php -- 1600

Réitérez refreshLinks.php pour actualiser tous les liens sans fuite mémoire

Voici un script d'exemple pour exécuter refreshLinks.php sur toutes les pages sans provoquer de problèmes mémoire.

num_pages=$(php /path/to/mediawiki/maintenance/showSiteStats.php | grep "Total pages" | sed 's/[^0-9]*//g')
end_id=0
delta=2000

echo "Beginning refreshLinks.php script"
echo "  Total pages = $num_pages"
echo "  Doing it in $delta-page chunks to avoid memory leak"

while [ "$end_id" -lt "$num_pages" ]; do
start_id=$(($end_id + 1))
end_id=$(($end_id + $delta))
echo "Running refreshLinks.php from $start_id to $end_id"
php /path/to/mediawiki/maintenance/refreshLinks.php --e "$end_id" -- "$start_id"
done

# Juste au cas où il y a d'autres ID après l'estimation faite avec showSiteStats, exécutez 
# un ou plusieurs refreshLinks.php non limités commençant avec le dernier ID de l'étape précédente
start_id=$(($end_id + 1))
echo "Running final refreshLinks.php in case there are more pages beyond $num_pages"
php /path/to/mediawiki/maintenance/refreshLinks.php "$start_id"