我实际上正在使用Zend Framework,我想从ldap目录获取信息。为此,我使用此代码:
$options = array('host' => '...', 'port' => '...', ...);
$ldap = new Zend_Ldap($options);
$query = '(username=' . $_GET['search'] . ')';
$attributes = array('id', 'username', ...);
$searchResults = $ldap->search($query, $ldap->getBaseDn(), Zend_Ldap::SEARCH_SCOPE_SUB, $attributes);
$ldap->disconnect();
可能有很多结果,所以我想通过限制结果的数量来实现分页。我搜索了Zend_Ldap的search()函数的参数,它有一个排序参数,但没有给出间隔。
您是否有限制结果数量的解决方案(例如在sql中限制为0,200)?
谢谢
答案 0 :(得分:0)
客户端请求的大小限制可用于限制目录服务器将返回的条目数。但是,客户端请求的大小限制不能覆盖任何服务器强加的大小限制。这同样适用于时间限制。所有搜索都应包含非零大小限制和时间限制。不包括大小限制和时间限制是非常糟糕的形式。有关详细信息,请参阅"LDAP: Programming Practices"和"LDAP: Search Practices"。
“分页”是使用简单的分页结果控制扩展来完成的。在我的博客文章中描述:"LDAP: Simple Paged Results"。
或者,如果您的API支持,搜索结果侦听器可用于处理结果,这会降低应用程序的内存需求。
答案 1 :(得分:0)
不幸的是,当前版本的PHP不支持开箱即用的ldap分页功能 - 请参阅http://sgehrig.wordpress.com/2009/11/06/reading-paged-ldap-results-with-php-is-a-show-stopper/
如果您可以控制您的服务器环境,可以使用PHP 5.3.2(可能还有其他)安装补丁,以便您执行此操作:https://bugs.php.net/bug.php?id=42060。
....或者您可以等到5.4.0发布用于制作,这应该是在接下来的几周内,其中包括此功能。
ldap_control_paged_results()和ldap_control_paged_results_response()是您在使用补丁时要使用的功能。我认为他们已经在5.4中重命名为单数ldap_control_paged_result()和ldap_control_paged_result_response()。
祝你好运!