[development] fixing broken nodes

Steven Jones steven.jones at computerminds.co.uk
Tue Apr 20 08:18:23 UTC 2010


Hi Lluís,

You can use Drupal's Batch API to process large sets of objects like
this. Documentation for the API is here:

http://api.drupal.org/api/group/batch

And it includes an example for iterating over all nodes.

Hope that helps!

Regards
Steven Jones
ComputerMinds ltd - Perfect Drupal Websites

Phone : 024 7666 7277
Mobile : 07702 131 576
Twitter : darthsteven
http://www.computerminds.co.uk



On 20 April 2010 08:38:19 UTC+1, Lluís Forns <enboig at gmail.com> wrote:
> I have some modules creating nodes calling directly node_save() and
> now when trying to rebuild permissions table drupal fails at a random
> node.
>
> I think this is caused because of some bad created nodes, and I thing
> I have found a way to fix them; but it fail because of memory limit.
> Is there a way to make node_load() not store nodes in cache? (I have
> around 30k nodes)
>
> Thanks
>
> <?php
> function mymodule_update_6008() {
>  $ret=array();
>  $res=db_query("SELECT nid, type FROM {node}");
>  while ($row=db_fetch_array($res)){
>    $prenode['type']=$row['type'];
>    $prenode=(object)$prenode;
>    $node_new=node_object_prepare($prenode);
>    $node_old=node_load($row['nid']);
>    foreach($node_old AS $key => $value) {
>      $node_new->$key = $value;
>    }
>    node_save($node_new);
>  }
> }
> ?>
>
>
> --
> *Les normes hi són perquè hi pensis abans de saltar-te-les
> *La vida és com una taronja, què esperes a exprimir-la?
> *Si creus que l'educació és cara, prova la ignorància.
> *La vida és com una moneda, la pots gastar en el que vulguis però
> només una vegada.
> *Abans d'imprimir aquest missatge, pensa en el medi ambient.
>


More information about the development mailing list