From: Graham B. <gb...@po...> - 2002-08-21 14:27:49
|
By default Net::LDAP will wait for all entries to be returned from the server before the ->search method returns. If you are returning this many entries then it will consume a lot of memory. The solution is to use a callback See http://search.cpan.org/perldoc?Net::LDAP#CALLBACKS By adding callback => \&my_callback to the search arguments and having sub my_callback { my ($mesg, $entry) = @_; # Callback is called without an entry when search finishes return unless $entry; if ($entry->isa('Net::LDAP::Entry')) { # Do what you want here, print it etc # Ensure the object does not keep the entry around and consume memory $mesg->shift_entry; } elsif ($entry->isa('Net::LDAP::Reference')) { # Do what you want with references here } else { warn "Unknown entry type " . ref($entry); } } Graham. On Wed, Aug 21, 2002 at 04:00:14PM +0200, Christer Hoel wrote: > Hi! > > I'm trying the following search: > > $res = $conn->search ( > base => "ou=$stuff,dc=mycompany,dc=com", > filter => "(&(objectclass=person)(!(mydate=NONE)))", > attrs => "[$charge]", > deref => "never", > scope => "one" > ); > > The prog's are perl v5.6.1 on solaris 2.8 using perl-ldap-0.25. The > directory is iPlanet 4.13. > > The ou=$stuff-tree contains about 27000 objects. This search run > an run until the perl-process reaches 250 Mb of memory-use and, on my > machine, runs out of memory. When the same search are performed with > iPlanets 'ldapsearch' from the shell and concatenated into a file, > this file reaches a filesize of only approx. 2,5 Mb. > > Why is perl-ldap eating my memory? Any ideas? > > Christer > > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 |