Manuel:RefreshLinks.php
Fichier MediaWiki : refreshLinks.php | |
---|---|
Emplacement : | maintenance/ |
Code source : | master • 1.42.3 • 1.41.4 • 1.39.10 |
Classes : | RefreshLinks |
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"