Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

495
Vistas
¿Cómo obtener consultas LDAP paginadas en PHP 8 y leer más de 1000 entradas?

Necesito obtener más de las 1000 entradas devueltas por mi búsqueda LDAP actual. Actualmente estoy ejecutando en un servidor de Windows con IIS y PHP 7.4, pero pronto actualizaré a 8.0.

Lo que he probado hasta ahora es esto:

 # Connect to the LDAP server $ldap = ldap_connect("ldaps://my.ldap.server:636"); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); $ldapBind = ldap_bind($ldap, "UserName", "Password"); # Do a search $searchResult = ldap_search($ldap, "DC=something1,DC=something2", "LDAP query); $countEntries += ldap_count_entries($ldap, $searchResult); $info = ldap_get_entries($ldap, $searchResult); # Process each found LDAP data row - this will be a maximum of 1000 rows for($i=0; $i < $info["count"]; $i++) { # do something ... }

Esto solo me dará las primeras 1000 filas, pero necesito leer al menos 30000 filas. El uso de "consultas con nombre" como mail=a* y mail=b* no es una solución viable, ya que podría haber más de 1000 entradas allí, por lo que necesito algún tipo de enfoque paginado confiable: una página por otra.

Puedo ver que lo más probable es que deba usar controles LDAP ya que ldap_control_paged_result ya no es una opción después de PHP 7.4, pero realmente no entiendo eso, ¿cómo usar esto?

¿Alguien tiene algunos consejos sobre qué hacer aquí? :-)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay un ejemplo en la documentación de PHP (ver ejemplo #5) sobre cómo obtener y paginar datos de LDAP en PHP 7.4+.

El siguiente fragmento de código de la documentación oficial se ha ajustado a un tamaño de página de 750 elementos por página.

 // $link is an LDAP connection $cookie = ''; do { $result = ldap_search( $link, 'dc=example,dc=base', '(cn=*)', ['cn'], 0, 0, 0, LDAP_DEREF_NEVER, [['oid' => LDAP_CONTROL_PAGEDRESULTS, 'value' => ['size' => 750, 'cookie' => $cookie]]] ); ldap_parse_result($link, $result, $errcode , $matcheddn , $errmsg , $referrals, $controls); // To keep the example short errors are not tested $entries = ldap_get_entries($link, $result); foreach ($entries as $entry) { echo "cn: ".$entry['cn'][0]."\n"; } if (isset($controls[LDAP_CONTROL_PAGEDRESULTS]['value']['cookie'])) { // You need to pass the cookie from the last call to the next one $cookie = $controls[LDAP_CONTROL_PAGEDRESULTS]['value']['cookie']; } else { $cookie = ''; } // Empty cookie means last page } while (!empty($cookie));
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda