[РЕШЕНО] Массовое удаление нод определённого типа в больших масштабах

Главные вкладки

Аватар пользователя DamagE@drupal.org DamagE@drupal.org 22 июня 2010 в 16:42

Здравствуйте, обращаюсь за помощью в поиске надёжного решения для массового удаления материалов определённого типа. Стандартный фильтр вынуждает отсеивать и потом лишь постранично удалять сразу отмечая показываемые варианты. Но там более сотни страниц получается, а еженедельные обновления превратятся в каторгу. Мне удалось найти лишь два способа:
Первый совет нашёл на сайте siteograf.com:
"Удалять через стандартные средства друпал несколько тысяч нод (node) очень утомительно и тогда на помошь приходит следубщий код.

Нужно создать файл с расширением php непример (delete.php), поместить его в (корневую) директорию сайта и запустить ваш-сайт/delete.php

<?php
require_once './includes/bootstrap.inc';drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$type="page";
$query= db_query("SELECT nid FROM {node} AS n WHERE type = '%s'",$type);
while ($row = db_fetch_object($query)) { print_r($row); node_delete($row->nid);
}
?>

В данном примере удаляться все материалы типа page" - не работает, хоть и права на файл 755. Загружается пустая страница. Тип вместо page указал свой (cat-parts), правильно ли? (адрес создания такой ноды: .../admin/node/add/cat-parts) С виду метод весьма хорош в плане удобства, но насколько высока будет нагрузка на сервер (400мгц, 128мб ОЗУ) при удалении около 6000 нод? Ну и конечно высок ли риск?

Второй - это модуль http://drupal.org/project/delete_all - но там пугают высоким риском при удалении тысяч страниц.

Признателен за любую помощь!

Комментарии

Аватар пользователя DamagE@drupal.org DamagE@drupal.org 22 июня 2010 в 17:16

glintwine, спасибо! но лучшим решением будет максимально простое. в виду горящего вопроса не могли бы сказать насколько просто настроить подсказанный вами модуль и произвести операцию отсева и удаления, а также нагрузки на сервер и насколько хорош bulk dekete?

Аватар пользователя DamagE@drupal.org DamagE@drupal.org 22 июня 2010 в 17:44

спасибо за помощь, мой выбор остановился на http://drupal.org/project/bulkdelete . 6400 нод удалил на данном железе чуть более чем за минуту. крайне прост: отмечаются галочками нужные типы и при этом рядом с ними показывается хранимое значение, что весьма немаловажно в столь ответственном выборе! Выбирается метод удаления (ну конечно же быстрый! Wink ) и все работает на уровне!

Аватар пользователя DamagE@drupal.org DamagE@drupal.org 22 июня 2010 в 19:15

импорт автозапчастей из xls перекодированного в csv. для каждой строчки из этого файла создаётся нода, а все они выводятся должным образом в таблицу views. в течении недели строчки беспорядочным образом редактируются в файле и поэтому лучше чем заново обновить весь каталог я не придумал. в целом схема заработала превосходно и главное - очень просто для заказчика не теряя стабильности (правда модуль импорта щас чего-то приуныл).

Аватар пользователя rbogdan@drupal.org rbogdan@drupal.org 22 июня 2010 в 23:11

Мне тоже нужно было удалять ноды, но не одного типа, а только с определённым свойством, немного примерно 20000. Так я ставил удаление node_delete в один из своих модулей и функцию hook_cron, и от туда они потихоньку и удалились. Тоже как вариант на будущее.