如果你能得到的可執行ldapsearch
在您的環境中工作(和它在* nix中和Windows的工作,雖然語法往往是不同的),你可以嘗試這樣的事:
my $LDAP_SEARCH = "ldapsearch -h $LDAP_SERVER -p $LDAP_PORT -b $BASE -D uid=$LDAP_USERNAME -w $LDAP_PASSWORD -LLL";
my @LDAP_FIELDS = qw(uid mail Manager telephoneNumber CostCenter NTLogin displayName);
open (LDAP, "-|:utf8", "$LDAP_SEARCH \"$FILTER\" " . join(" ", @LDAP_FIELDS));
while (<LDAP>) {
# process each LDAP response
}
我使用它讀取近100K的LDAP條目,但沒有內存問題(儘管它仍需要30分鐘或更多)。您需要定義$FILTER
(或將其留空),當然還需要定義所有LDAP服務器/用戶名/密碼片段。
如果你想/需要做一個更純的Perl版本,我已經使用Net::LDAP
而不是Net::LDAP::Express
更好,尤其是對於大型查詢。
http://perldoc.perl.org/Thread/Queue.html –