在 OpenLDAP 中,分页 ldap_search 以绕过大小限制,可以通过使用范围查询和简单分页实现。
首先,需要了解 OpenLDAP 中的范围查询。范围查询是指在搜索结果中限制返回的条目数量。可以使用 ldap_search
函数的 sizelimit
参数设置范围查询的大小限制。例如,以下代码将范围查询的大小限制设置为 1000:
$result = ldap_search($ldapconn, $base_dn, $filter, $attributes, 0, 1000);
然而,如果搜索结果的条目数量超过了范围查询的大小限制,需要使用简单分页来获取所有结果。简单分页是指将搜索结果分成多个部分,每次只返回一部分结果。可以使用 ldap_search
函数的 pagedcontrol
参数设置简单分页。例如,以下代码将使用简单分页获取所有结果:
$pageSize = 1000;
$cookie = '';
$results = [];
do {
ldap_control_paged_result(
$ldapconn,
$pageSize,
true,
$cookie
);
$result = ldap_search($ldapconn, $base_dn, $filter, $attributes);
if (ldap_count_entries($ldapconn, $result) > 0) {
$entries = ldap_get_entries($ldapconn, $result);
foreach ($entries as $entry) {
$results[] = $entry;
}
}
ldap_control_paged_result_response(
$ldapconn,
$result,
$cookie
);
} while (!empty($cookie));
在上述代码中,$pageSize
变量设置每页的大小,$cookie
变量用于存储分页的状态。在每次循环中,使用 ldap_control_paged_result
函数设置分页控制,然后使用 ldap_search
函数搜索目录。如果搜索结果中有条目,将它们添加到 $results
数组中。最后,使用 ldap_control_paged_result_response
函数获取分页状态,并将其存储在 $cookie
变量中,直到所有结果都被获取为止。
总之,在 OpenLDAP 中,可以使用范围查询和简单分页来绕过大小限制,以获取大量的搜索结果。
领取专属 10元无门槛券
手把手带您无忧上云