Руководство:RefreshLinks.php

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

Подробнее

refreshLinks.php файл скрипта обслуживания для [повторного] заполнения таблиц pagelinks , categorylinks и imagelinks . Вы должны запустить его, если обнаружили, что категории пусты или не показывают все релевантные страницы, если "Ссылки сюда?" работает плохо, или если возникли другие проблемы, связанные со ссылками. Кроме того, этот скрипт удаляет ссылки, указывающие на несуществующие страницы из следующих таблиц: pagelinks, categorylinks, imagelinks, templatelinks , externallinks , iwlinks , langlinks , redirect , page_props

Использование

Основное

php maintenance/refreshLinks.php [starting_article]

например, если вы хотите, чтобы сценарий начинался со страницы с id 8000:

php maintenance/refreshLinks.php 8000

Расширенное

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

Параметры

Опция/Параметр Описание
--dfn-only Удалять ссылки только из несуществующих статей
--new-only Затрагивает только статьи с одним редактированием
--redirects-only Исправлять только перенаправления, а не все ссылки
--old-redirects-only Исправлять только те перенаправления, в которых нет записей в таблице перенаправлений
--e <page_id> Идентификатор последней страницы для обновления
--dfn-chunk-size Максимальное количество существующих идентификаторов для проверки за один запрос, по умолчанию 100 000
--namespace Исправлять страницы только в этом пространстве имен. Пространство имен должно быть числовым идентификатором.
--category Исправляйте только страницы в этой категории
--tracking-category Исправлять только страницы в данной категории отслеживания
--m <max_lag> Максимальная задержка репликации
--wiki Для указания ID вики
--help Показать справку
<start> Номер статьи (page_id), с которого следует начать
no parameters Обновит все статьи

При этом поддерживаются и общие варианты.

Пример вывода

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


Предотвращение проблем с памятью

Этот скрипт может столкнуться с проблемами памяти. Чтобы избежать этого, вы можете установить последнее значение page_id для обновления.

php refreshLinks.php --e 1500

Для выполнения следующего набора page_ids вы вводите

php refreshLinks.php --e 3000 -- 1500

Продолжайте, пока все идентификаторы страниц в вашей вики не обновятся.

Если вы забыли установить последний page_id для обновления и если у скрипта закончилась память, просто запустите его заново с последним выводом page_id в качестве статьи, с которой следует начать, например.

php refreshLinks.php -- 1600

Chunking refreshLinks.php to refresh all links without memory leak

Below is an example script to run refreshLinks.php against all pages but without having memory issues.

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

# Just in case there are more IDs beyond the guess we made with showSiteStats, run 
# one more unbounded refreshLinks.php starting at the last ID previously done
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"