Руководство:DeleteBatch.php
Версия MediaWiki: | ≥ 1.7 |
Файл MediaWiki: deleteBatch.php | |
---|---|
Расположение: | maintenance/ |
Исходный код: | master • 1.42.3 • 1.41.4 • 1.39.10 |
Классы: | DeleteBatch |
Details
deleteBatch.php — скрипт обслуживания, расположенный в директории maintenance
, который может быть использован для удаления множества страниц.
Options/Arguments
Параметр | Описание | Required? | Default |
---|---|---|---|
listfile | Файл, в котором каждая строка содежит название страницы для удаления. | Обязательно | |
--u | Имя участника, показываемое в записях журнала. Если оставлено пустым, удаления записываются на участника, называемого Delete page script. | По желанию | Delete page script |
--r | Причина для удаления. Если пустая, причина не отображается в журналах. | По желанию | |
--i | Количество секунд задержки после каждого удаления. | По желанию | 0 |
Использование
php maintenance/deleteBatch.php somepages.txt [ --u| --r| --i ]
(Это удалит страницы содержащиеся в текстовом файле "somepages.txt")
$ php maintenance/deleteBatch.php deleteBatch.txt Page1 Deleted! Page2 Deleted! Page3 Deleted!
На вики фермы с связанные папки, изменить к папке, содержащей LocalSettings.php и использование:
php ./maintenance/deleteBatch.php --conf ./LocalSettings.php --r "reason for deletion" ./deleteBatch.txt
Советы и тонкости
Если заголовки страниц содержат специальные символы (например, ä, ö, ü и т.д.), обязательно сохраните файл в кодировке UTF-8. В противном случае скрипт может не найти соответствующие названия страниц в базе данных!
Вы можете создать список страниц с помощью SQL следующим образом:
mysql -e "select page_title from page where page_touched between 20150431000000 and 20150519000000 and page_namespace = 0 into outfile '/tmp/pagelist.csv'"
Это позволит создать список, в котором будут затронуты все заголовки страниц в период между 2015-04-31 и 2015-05-19. Это может быть полезно, если ваша Вики подверглась атаке спам-ботов, а в это время совершались и другие правки.
Другие пространства имён
Вышеуказанная команда охватывает только основное пространство имён. База данных mysql может не знать префиксные имена других пространств имён, поэтому их нужно указывать одно за другим. К примеру, вот так можно удалить все страницы в пространстве имён «Участник», с категорией deleteme и без какого-либо другого текста:
mysql -e "select concat('User:',p.page_title) from page p INNER JOIN revision r ON p.page_latest = r.rev_id INNER JOIN text t ON r.rev_text_id = t.old_id where t.old_text = '{{deleteme}}' and p.page_namespace = 2 into outfile '/tmp/deleteme-user.csv'"
См. также
- Расширение:DeleteBatch – расиширение, создающее служебную страницу для этого скрипта обслуживания
- Справочник:DeleteRevision.php
- Руководство:DeleteOldRevisions.php