Ticket #1185 (closed defeito: fixed)
Erro ao listar OU com muitos objetos dentro do Catálogo Geral
Reported by: | niltonneto | Owned by: | niltonneto |
---|---|---|---|
Priority: | normal | Milestone: | Expresso 2.0.9 |
Component: | ContactCenter | Version: | branch 2.0 |
Severity: | grave | Keywords: | exhausted memory ldap_search |
Cc: | WorkGroup: |
Description
O problema acontece devido à implementação atual, que utiliza a função nativa PHP "ldap_search" para listar objetos de uma OU, bem como pesquisar objetos dentro de uma determinada OU.
Se há organizações com subníveis e milhares de objetos no resultado final, o servidor PHP acusa o erro "exausthed memory", na hora de executar o "get_entries", logo após o "ldap_search".
Infelizmente, a implementação atual precisa retornar todos os CNs e DNs para efetuar a ordenação (ldap_sort) e depois a paginação. Não adianta limitar o "size_limit" pois a ordenação via "ldap_sort" só funciona corretamente se no resultado houver todos os objetos.
Para corrigir o problema na versão atual (2.0), será alterado o comportamento de listar uma OU. Serão retornados apenas os objetos do seu nível (ldap_list). Já com a pesquisa, permanece o funcionamento atual (ldap_search).
Será adicionado um parâmetro (boolean) na assinatura do método find(), que define a recursividade na busca. Para uma próxima versão, podemos implementar uma melhoria para tornar esse parâmetro configurável, tanto na parte de administração do módulo, quanto em uma "busca avançada" feita pelo usuário.