LDAP SIze限制超出 - 捕获警告

时间:2011-07-29 12:19:24

标签: php ldap

使用LDAP时出现此错误,我知道我的最大数字是25。

Warning: ldap_search() [function.ldap-search]: Partial search results returned: Sizelimit exceeded in

如何捕获此信息并输出部分结果并显示有很多结果。或者我可以只显示有很多结果吗?

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

目录服务器对以下内容施加限制:

  • 从搜索中返回的对象数
  • 搜索所花费的时间
  • 创建候选列表时要检查的条目数

根据服务器的不同,可以通过全局配置,客户端连接策略或基于身份验证标识来强制实施限制。搜索响应中的结果表示将部分数量的结果返回给客户端。客户端可以(并且应该)将大小限制和时间限制作为搜索请求的一部分,但这些限制(称为客户端请求的限制)不能覆盖服务器限制。

正确编码的API将返回最多sizelimit条目数的条目。换句话说,如果有3个条目与搜索参数匹配,则客户端将客户端请求的大小限制设置为2,服务器将返回2个条目(按任何顺序,LDAP条目未被排序,即排序不是可重复的)并将搜索结果代码设置为“超出大小限制”。

虽然AD使用1000可能是常识,但不得使用服务器供应商,版本或配置的知识对应用程序进行编码。这样做是不好的形式,不专业,导致脆弱,不可维护的代码。对您的应用程序进行编码,因为您连接的服务器是一个通用的LDAP服务器,完全符合IETF的LDAP管理局标准。

我的blog entry对搜索请求和搜索响应进行了一些讨论,我还创建了一篇LDAP: Programming Practices文章。

答案 1 :(得分:0)

$resource = ldap_search( $link_identifier, $base_dn, $filter );
if ( ldap_errno( $link_identifier ) === 4 )
    echo 'Partial search results returned';

$resource = ldap_search( $link_identifier, $base_dn, $filter );
if ( strtoupper( ldap_error( $link_identifier ) ) === 'SIZE LIMIT EXCEEDED' )
    echo 'Partial search results returned';