Руководство:RefreshLinks.php
Файл MediaWiki: refreshLinks.php | |
---|---|
Расположение: | maintenance/ |
Исходный код: | master • 1.42.1 • 1.41.2 • 1.39.8 |
Классы: | RefreshLinks |
Подробнее
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"