2014-12-03 10 views
1

В качестве доказательства того, насколько хороши мои усилия SEO для одного из наших веб-сайтов, вики, проживающие в том же домене, получили 2601 спам-страницы за 2 дня (совпадение, которое было перечислено в SERPs 2 дня назад...).Заключительные штрихи очистки таблиц Mediawiki после удаления спам-страниц

Я заблокировал вики (только для чтения), включил списки блоков, Captchas и т. Д. И т. Д. И использовал расширение Nuke для удаления всего спама.

Теперь это замечательно только для одного расширения, но оно все еще оставляло вещи здесь и там, которые я бы хотел обрезать.

В принципе, Nuke (который, я думаю, это официальное расширение) оставил «осиротевшие» записи в следующих таблицах: pagelinks, searchindex, users.

У меня нет проблем с удалением записей, но я не хочу нарушать согласованность базы данных, случайно обрезая материал. Я могу понять, как выполнять SQL-запросы, сценарии командной строки Linux и всевозможные передовые материалы.

Итак, вот некоторые вопросы для некоторых полезных читателей StackOverflow, которые знают Mediawiki внутренностей:

  • Могу ли я свободно удалять пользователей строк таблицы? Мне просто нужно сохранить две строки, чтобы запрос SQL был простым. Я просто не хочу вызывать побочные эффекты с любыми другими таблицами, которые могут быть связаны с ними.

  • Что я могу сделать, чтобы удалить осиротевшие записи в pagelinks? Они явно указывают на теперь страницы, но по умолчанию поддерживаются сценарии Mediawiki по умолчанию, которые я использовал (сначала расширение nuke, затем rebuildall.php) не убирают этих сирот. Это заставляет меня поверить, что у меня все еще может быть мусор, в результате сценарий не удаляет ссылки, указывающие на него. Тем не менее, я проверил тройные страницы ... только несколько страниц, сделанных нами, больше не осталось. Я также очистил ревизии.

Я попытался с помощью консоли refreshLinks.php и orphans.php сценарии, но они ничего не сделали соответствующий.

Я уверен, что таблица pagelinks может быть дополнительно обрезана, потому что с помощью скрипта обслуживания консоли dumpLinks.php я могу легко grep всевозможные «неудобные» слова и ссылки.

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это ** блог ** сообщение, а не вопрос! –

ответ

-1

Надеюсь, вы создадите резервные копии своих баз данных не реже одного раза в день. В этом случае, предположив, что вики являются довольно новыми, было бы проще просто вернуться к не спамерованной версии вашей БД, а также предупредить или вручную повторить изменения, сделанные в течение этих двух дней.

Как правило, реляционная база данных должна иметь строгие отношения, которые не позволят вам оставить ее в несогласованном состоянии путем представления ошибки или каскадирования вашего действия. Не уверен, насколько хорошо MediaWiki определил свои отношения.

Я удалил строки из таблицы пользователей и не заметил никаких проблем. Я предлагаю удалить строки из таблицы pagelinks и посмотреть, что произойдет.

Вы можете проверить здравомыслие вашей вики, запустив на нем автоматический робот и посмотрев, возникли ли какие-либо ошибки.

+0

К сожалению, веб-приложения MySQL обычно не имеют ограничений ссылочной целостности. На самом деле веб-приложения созданы для работы в службах хостинга с наименьшим знаменателем. «Самый низкий» на самом деле означает это, вы обнаруживаете такие ужасно плохие услуги хостинга, о которых вы можете мечтать о том, что они устанавливают приличную настройку MySQL, поэтому популярные веб-приложения, созданные для работы на этих сервисах, не требуют (и не предоставляют) ничего удаленно продвинутого, начиная с ссылочной целостности и заканчивая без поддержки хранимых процедур. –

+0

Сказал это, я взял несколько моментов, чтобы придумать решение, подобное вашему. Если вы хотите, чтобы это было принято как ответ, вы должны добавить что-то, чего я еще не знал, например, фрагмент SELECT SQL, чтобы распечатать (только) список строк сиротских ссылок. –

+0

Ограничения целостности должны работать на любой установке, и плата, которую они берут, часто незначительна, поскольку большинство БД более заняты SELECT, чем выполнение INSERT или REPLACE, но да, многие системы не имеют надлежащих ограничений. Глядя на БД MediaWiki, я не видел никаких ограничений (выберите * из information_schema.table_constraints, где constraint_schema = 'YOUR_DB'), который печален IMHO. Я бы не рискнул рекомендовать SQL-фрагменты, которые я не тщательно тестировал, но (SELECT * FROM pagelinks WHERE pl_title NOT IN (SELECT page_title FROM page)) может быть началом, но вам не нужно принимать мой ответ. – Collector

 Смежные вопросы

  • Нет связанных вопросов^_^