AD does support paged results.  This code is basically cut from an
example I found, and I use this structure:

my $page = Net::LDAP::Control::Paged->new( size => 100 );
my $cookie;
my $count = 0;
while (1) {
        $mesg = $ldap->search(
                base => "DC=example,DC=com",
                filter => "(objectclass=user)",
                control => [ $page ]
                );
        $mesg->code && die  "Error on search: $@ : ".$mesg->error;
         while ($adentry = $mesg->pop_entry()) {
                //process
         }
        my($resp)  = $mesg->control( LDAP_CONTROL_PAGED ) or last;
        $cookie    = $resp->cookie or last;
        # Paging Control
        $page->cookie($cookie);
}
if ($cookie) {
        print "abnormal exit\n";
   # We had an abnormal exit, so let the server know we do not want any more
   $page->cookie($cookie);
   $page->size(0);
   $ldap->search( control => [ $page ] );
}



On Tue, Jul 1, 2008 at 3:23 AM, Chris Ridd <[EMAIL PROTECTED]> wrote:
>
> On 1 Jul 2008, at 07:52, Vartak, Yash V wrote:
>
>> Hey Chris I have tried that
>>
>> but it returns exactly no that a page size is set to, If you set the
>> page size to a value greater than admin limit it would return the amount
>> of entries <eq> to admin limit.
>>
>> logically I need the flow need to go this way
>>
>> {search first 999 entries}
>>   <do processing>
>>  {search next 1000 - 1999 entries}
>>        <do processing>
>>    ... continues till the time all the entries are processed
>>
>> What I am missing out is how to leave a pointer at 999 th entry
>>
>> Looks like I am making some mistake while implementing
>> Net::LDAP::Control::Paged
>
> Possibly. The man page shows you the loop that you have to write to get each
> page, which involves retrieving a cookie and reusing it in the next search,
> ie your "pointer". Did you also check if AD supports Paged Results?
>
> Cheers,
>
> Chris
>



-- 
--
Justin B. Alcorn

Reply via email to