it-swarm-es.com

node_delete () no está eliminando nodos

Estoy tratando de usar una función drush para eliminar todos los nodos del módulo drealty en mi instalación drupal 6. Sin embargo, algo está causando una pérdida de memoria y los nodos no se eliminan después de node_delete se llama ¿Qué puedo hacer?

Aquí está el error de memoria agotada:

drush rets-flush
PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in /home/directory/public_html/sites/all/modules/filefield/field_file.inc on line 300
Drush command terminated abnormally due to an unrecoverable error.   [error]
Error: Allowed memory size of 134217728 bytes exhausted (tried to
allocate 71 bytes) in
/home/directory/public_html/sites/all/modules/filefield/field_file.inc,
line 300

Aquí está la función drush rets-flush:

function drush_drealty_rets_flush() {
  set_time_limit(0);

  $result = db_query("SELECT nid FROM {node} WHERE type = 'drealty_property' OR type = 'drealty_agent' OR type = 'drealty_office' OR type = 'drealty_open_house'", $conid);

  $count = 0;
  while ($nid = db_fetch_object($result)) {
    node_delete($nid->nid);
    drush_log(dt('Deleting node id: @nid. ', array('@nid' => $nid->nid)));
    $count++;
  }
  drush_log(dt('Deleted @count nodes', array('@count' => $count)), 'success');
}

Hay alrededor de 5000 registros en total.

2
Arosboro

Es posible que aún se quede sin memoria si tiene suficientes nodos del tipo drealty. Esto se debe a que node_delete() llama a node_load(), y eso agrega cada nodo a una caché estática. Si se encuentra con esto, simplemente llame a node_load(NULL, NULL, TRUE) una vez cada 50 - 100 iteraciones.

2
justintime

Encontré la respuesta yo mismo. Tuve que ejecutar drush como administrador:

drush -u admin rets-flush

Pensé que drush se ejecutaba como administrador automáticamente, pero supongo que no.

2
Arosboro