php ldap_search / list возвращает null при поиске по неиндексированному параметру, и запись превышает ограничение сервера - PullRequest
0 голосов
/ 13 декабря 2011

Я выполняю поиск в ldap по неиндексированному ключу, например email, следующим образом:

$dn = 'ou=users,ou=y,o=x';
$filters = '(email=example@so.com)';
$just = array ('id');
$sr = ldap_list ($ds_id, $dn, $filters, $just);

, и результат в порядке, если запись находится в

Что бы я хотел знать, есть ли способ получить ожидаемый результат, когда я выполняю поиск по неиндексированному ключу, независимо от того, сколько записей у меня есть и независимо от того, на какой позиции находится запись, которую я хочу получить.

Я также всегда получаю это предупреждение всякий раз, когда я выполняю поиск, независимо от типа ключа:

Warning: ldap_list() [function.ldap-list]: Partial search results returned: Adminlimit exceeded in...

Предупреждение отображается, если поиск также успешен, и результатом всегда является 1 запись. Я не собираюсь возвращать более 1 записи / поиска.

Надеюсь, вы, ребята, сможете пролить свет на это. TA!

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

«Превышен административный лимит» означает, что клиент LDAP превысил некоторый лимит, установленный администраторами серверов - на многих LDAP-серверах этот предел известен как предел просмотра. Превышен предел размера означает, что параметры поиска соответствуют 1) количеству записей, превышающему запрошенный клиентом предел размера, или 2) количеству записей, превышающему установленный сервером предел размера. Превышен лимит администратора и превышен лимит размера - это совершенно разные понятия.

Клиентам LDAP никогда и никогда не следует устанавливать ограничение размера на ноль - это фактически заставляет сервер возвращать клиенту все записи, которые соответствуют параметрам поиска. Это может не только перегружать сервер и отрицательно влиять на других клиентов, но клиент может не справиться с количеством возвращаемых записей. Клиенты всегда должны указывать ненулевой (положительный) лимит размера и время поиска. Для получения дополнительной информации см. «LDAP: Практика программирования» . Правильно настроенные серверы в любом случае ограничат количество записей, возвращаемых клиенту, и запрошенный клиентом предел размера (и ограничение по времени) не может переопределить ограничения, наложенные сервером, поэтому установка ограничения размера (или ограничения по времени) на ноль может не дать результат, которого вы хотите в любом случае. Современные серверы каталогов профессионального качества могут даже ограничивать количество записей, возвращаемых по времени, потраченному на поиск корневым DN.

Клиенты LDAP никогда не должны выполнять неиндексированные поиски, не договариваясь с администраторами сервера, потому что неиндексированные поиски могут отрицательно повлиять на производительность сервера и привести к снижению производительности в противном случае ничего не подозревающих клиентов LDAP. Правильно настроенные серверы будут запрещать неиндексированные поиски некоторым или всем клиентам, хотя администраторы могут утверждать неиндексированные поиски в особых случаях, когда может быть предоставлено разумное обоснование экономического обоснования.

0 голосов
/ 13 декабря 2011

Некоторые предложения:

  • Добавьте параметр ( sizelimit ), чтобы запретить LDAP ограничивать количество выходов.

    $ sr =ldap_list ($ ds_id, $ dn, $ filters, $ just, 0);

  • Использовать условие поиска, включающее dc поля.Я имею в виду:

    $ dn = 'ou = пользователи, ou = y, o = x, dc = компания, dc = es';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...