我明白了:
Warning: ldap_search(): Partial search results returned: Sizelimit exceeded
尝试在ldap_search
条记录上使用>1000
时
找到>5.4
的解决方案,但仍无法找到< 5.4 PHP版本。
P.S。无法更新服务器版本。还尝试设置限制:
ldap_set_option($ldap_connect, LDAP_OPT_SIZELIMIT, 100);
但它会带来同样的警告。
答案 0 :(得分:2)
PHP的解决方案< 5.4是(测试蚂蚁工作):
$alph = array('a', 'b', 'c', 'd', 'e',
'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'r', 's',
't', 'u', 'y', 'v', 'w', 'z');
foreach ($alph as $letter){
$sr = ldap_search($ldap, $dn, '(&(telephoneNumber=*)(sAMAccountName=' . $letter . '*))', array('cn','telephoneNumber','sAMAccountName'), null, 0, 0);
$users = ldap_get_entries($ldap, $sr);
foreach ($users as $user) {
echo $user['sAMAccountName']['0']."<br/>";
}
}
您还可以添加数字过滤器,例如telephoneNumber,取决于你有多少记录。如果你有更多的记录,你可以尝试使用更多的循环过滤第一和第二个字母,如sAMAccountName=' .$letter.$letter2.'*
答案 1 :(得分:1)
你似乎运气不好!
您可以将客户端的sizelimit更改为您喜欢的任何值,但不能设置服务器的sizelimit。这只适用于LDAP服务器的管理员,他们通常有充分的理由限制返回的结果集。服务器端限制通常是1000个条目。通过设置ldap_set_option($ldap_connect, LDAP_OPT_SIZELIMIT, 100);
,您可以将该限制减少到返回的100个条目,但不能将其扩展到服务器限制之外。
获得“更多”结果的唯一方法是使用paged results。这意味着您多次查询LDAP-Server,每次获得最大结果集,但每次从您尚未收到的第一个条目开始。在PHP代码中,您可以聚合结果,最终有超过1000个条目。
但这只能从PHP 5.4开始提供。所以看起来你运气不好。
在我看来,有三种解决方案:
由于3通常很难,1需要很多时间,所以我强烈建议您考虑选项2!