Hi, <div><br></div><div> I am badly stuck at this one, I am trying to convert a cron function to batched drush execution to overcome memory limits etc. I could have gone for queued cron execution but in my initial assessment I found batched drush execution simpler. Anyways, I am using views_savedsearches to allow my users to keep a tab on their exposed filters, since the data keeps coming in for their criteria I am also using notifications_views_savedsearches (which comes in the same package) to notify them if they have subscribed to their saved searches. So All is good except the amount of content is huge for hook_cron of notifications_views_savedsearches to process without memory errors which prompted me to convert it into batched drush execution. </div>
<div><br></div><div>So I got to a good start and quickly deconstructed (almost) the notifications_views_savedsearches_cron implementation into batch process to be run by drush. Everything is fine, except that $view-&gt;execute() doesn&#39;t return any result for my implementation but does yield results in the original implementation. This is the place I am stuck, few things to note here:</div>
<div><br></div><div>1&gt; $view Object just before calling $view-&gt;execute() is exactly same for both implementations ( old cron and new batch worker process ), I ran a diff couple of times. Please note that both functions have practically same code except that I had to write couple of extra function to make batch work.</div>
<div>2&gt; On further investigation found out that query and count query are same too but args are different. </div><div><br></div><div>Am I wrong to assume that calling execute() on two identical view objects can lead to different results? Atleast thats what I am experiencing? (There is no additional processing on the view object, they are exactly same before execute() is called on them)</div>
<div><br></div><div>On further investigation found out that the view object of my batch worker process has $this-&gt;exposed_data empty and thats the reason for args to be malformed and for query to returning empty result. I haven&#39;t been able to find out much on why is exposed_data set in one view and not in other when they were identical before calling execute() on them, looking at call stack, I found out much of the query building and pre processing is done in $this-&gt;build and $this-&gt;_build($key) and thats where $this-&gt;exposed_data is bailing out on me. </div>
<div><br></div><div>Some of the debugged Arrays:</div><div><br></div><div>$args for the cron function (the one thats working) - </div><div>Array</div><div>(</div><div>    [0] =&gt; drealty_property</div><div>    [1] =&gt; 0</div>
<div>    [2] =&gt; 100000000</div><div>    [3] =&gt; 0</div><div>    [4] =&gt; 0</div><div>    [5] =&gt; 39</div><div>)</div><div><br></div><div>$this-&gt;exposed_data returns a healthy array</div><div><br></div><div>One thats not working ( my batched execution $args) :</div>
<div><br></div><div><div>Array</div><div>(</div><div>    [0] =&gt; drealty_property</div><div>    [1] =&gt; </div><div>    [2] =&gt; </div><div>    [3] =&gt; </div><div>    [4] =&gt; </div><div>    [5] =&gt; </div><div>    [6] =&gt; </div>
<div>)</div></div><div><br></div><div>$this-&gt;exposed_data doesn&#39;t return anything. </div><div><br></div><div><br></div><div>Code of both functions is almost same and the $view object just prior to $view-&gt;execute() is exactly identical. </div>
<div><br></div><div>Has anyone faced anything similar? Could it be due to the batch API? I am using drush_backend_batch_process() to process my batch. Everything else is working except that my batch process doesn&#39;t have anything in $view-&gt;result. I haven&#39;t been able to find where does $this-&gt;exposed_data get set. <br>
</div><div><br></div><div>Crux of code for both function is:</div><div><br></div><div><div>    $vs = views_savedsearches_load($subscription[&#39;sid&#39;]);  // Retrieving exposed filter setting for the subscriber using helper function of views_savedsearches</div>
<div><br></div><div>    $view_name = db_result(db_query(&quot;SELECT name FROM {views_view} WHERE vid = %d&quot;, $vs-&gt;vid));</div><div><br></div><div>    $view = views_get_view($view_name);</div><div><br></div><div>    if (is_object($view) &amp;&amp; is_object($vs)) {</div>
<div>      if ($view instanceof view) {</div><div><br></div><div>        // Apply $vs-&gt;filters</div><div>        $view-&gt;set_exposed_input($vs-&gt;filters);</div><div>        </div><div>        // The original code limits this value to 10 which is not much useful as new data at any point of time is anytime more than 10</div>
<div>        $view-&gt;pager[&#39;items_per_page&#39;] = 0;</div><div><br></div><div>        // Run the query   // $view at this point in both functions is exactly same ( did a diff )</div><div>        $view-&gt;execute(&#39;default&#39;);</div>
<div>    </div></div><div>         $view-&gt;result  is empty for my batch process but has values for the old cron function. I am pretty sure(?), that I am not making a silly variable in scope mistake.</div><div><br></div>
<div><br></div><div>  Thanks in Advance </div><div><br></div><div><br></div><div><br></div><div>----------------------------------<br>Dipen Chaudhary<br>QED42 : We build beautiful and scalable web strategies ( <a href="http://www.qed42.com">www.qed42.com</a> )<br>
Blog: <a href="http://dipenchaudhary.com">dipenchaudhary.com</a><br>Twitter: <a href="http://twitter.com/dipench">http://twitter.com/dipench</a><br><br>
</div>