Try sticking this in your function:<div><br></div><div>static $nodecount = 0;</div><div>$node = node_load($nid); </div><div>$nodecount++;</div><div>if ($nodecount % 50 == 0) {</div><div>  node_load(NULL,NULL,TRUE);</div><div>
}</div><div>  <br><br><div class="gmail_quote">On Fri, Jul 23, 2010 at 8:46 AM, Brian Vuyk <span dir="ltr">&lt;<a href="mailto:brian@brianvuyk.com">brian@brianvuyk.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Can anyone think of a situation where a node_load() contained in a function returns partial results when the function is called from a batch script?<br>
<br>
I have a simple function that I am calling the from a batch API script that processes through a bunch of nodes to fix filepaths in certain migrated content. I&#39;ve begun experiencing a strange issue while testing it; I&#39;ve boiled it down to the following test case:<br>

<br>
&lt;?php<br>
<br>
function migration_fix_photos($nid) {<br>
  $node = node_load($nid);<br>
  dpm($node);<br>
  drupal_set_message(&#39;NID is &#39; . $nid);<br>
}<br>
?&gt;<br>
<br>
When I call this function with a given NID from a batch script, on some runs, the $node object returned by $node_load is only partially loaded - it has 3 of the 10-12 CCK fields the node should contain, also, $node-&gt;title, $node-&gt;nid, $node-&gt;uid and $node-&gt;type are missing from the object, among other portions.<br>

<br>
The behavior changes between runs of the batch script. I can run a testing run, and only get partially loaded nodes. I can re-run the batch script, and they are fully loaded. Note that this changes per-run of the batch script, not per-call of the function. That is, when the batch script operates on 2000 nodes, the partial node_load() will or will not happen for all 2000 times the above function is run. I could run the batch script again, and get perfectly normal results for all 2000 nodes next time.<br>

<br>
If I call the above function directly, it shows correct results every time. This only happens when called from a batch script. Note that the $nid argument is always shown as correct (tested with the drupal_set_message() call).<br>

<br>
Does anyone have any ideas why this is happening? I have tried using Xdebug, but I can&#39;t determine how to attach onto the background AJAX  requests the browser is making.<br>
</blockquote></div><br></div>