Bonjour,

J'essaye actuellement de récupérer l'intégralité de mes utilisateurs AD afin de les intégrer dans ma base de données mais je rencontre un problème de "Sizelimit exceeded".
J'ai essayé de contourner ce problème en ajoutant un ldap_set_option avec un LDAP_OPT_SIZELIMIT et en faisant un range(a,z) mais j'ai toujours des erreurs ...

Explication :
- Lorsque je ne mets pas de LDAP_OPT_SIZELIMIT, il me ressort une erreur : "Warning: ldap_search(): Search: Operations error".
- Lorsque je mets un LDAP_OPT_SIZELIMIT à 40 par exemple, j'ai des résultats mais pas pour toutes les lettres .
Pour les lettres avec résultat, il me retourne les 40 premiers de cette lettre mais avec toujours une erreur : "Sizelimit exceeded".
Pour toutes les autres lettres, il me retourne un "Operations error".

Je n'arrive pas à comprendre ce que je dois faire exactement.
Pourriez-vous m'aider à récupérer tous mes utilisateurs svp ?


Voici mon code afin de vous aider à mieux comprendre ma démarche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function ListeLdap($j, $LetterFiltre)
{   
    $Conf_LDAP_Server    = "serveur.domain.fr";
    $Conf_Def_Dom        = 'domain.fr';
    $search              = "DC=domaindc,DC=domaindc";
 
    $ds = @ldap_connect($Conf_LDAP_Server);
    if ($ds)
    {
        ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_set_option($ds, LDAP_OPT_SIZELIMIT, 40);
 
        $r = ldap_bind($ds, 'administrateur'.'@'.$Conf_Def_Dom, 'mdp');     
		$FiltreSearch   = "(&(objectClass=user)(objectCategory=person)(cn=".$LetterFiltre."*))";
		$sr=ldap_search($ds, $search, $FiltreSearch);
		$infoLDAP = ldap_get_entries($ds, $sr);
		ldap_close($ds);
		$info = array(); $nom = array();
		for($i=0; $i<count($infoLDAP); $i++){
			if( !empty($infoLDAP[$i]['cn'][0])){
				$info[$j]['nom']    = $nom[] = utf8_encode($infoLDAP[$i]['cn'][0]);
				$j++;
			}
		}
        print_r($info);
 
    } else {
		echo "Erreur connexion";
	}
	return $j;
}
 
$j=0;
foreach (range('a', 'z') as $LetterFiltre) {
	$j = ListeLdap($j, $LetterFiltre);
}
Merci beaucoup pour l'aide que vous m'apporterez.

--
Sweet.