C'est quand même avec un peu d'étonnement que j'ai découvert que le module ldap de PHP (au moins jusqu'aux versions 4.4.4 et 5.1.6) ne supportait pas l'option LDAP_OPT_NETWORK_TIMEOUT. A quoi peut-elle bien servir ?
Cette option de la librairie openLDAP permet de définir le timeout de connexion au serveur, ce qui peut être très utile quand on utilise plusieurs serveurs LDAP, de pouvoir se connecter à un second serveur si le premier est indisponible, il y a deux scénarios possibles :
- le serveur principal est en ligne mais le service LDAP ne l'est pas, la commutation vers le serveur secondaire est instantanée (port 389 et/ou 636 fermés, le client se voit répondre un RST à sa demande de connexion), dans ce cas là , pas de problèmes.
- le serveur est hors ligne... aucune réponse à une tentative de connexion, dans ce cas, il se passe au moins 2 minutes voire plus avant que le serveur secondaire ne soit interrogé.
Le délai de deux minutes est réglable via l'option LDAP_OPT_NETWORK_TIMEOUT, mais pas de chance... elle n'est pas implémentée dans les dernières version de PHP... j'ai donc écrit ce tout petit patch initialement pour la version 5.1.4, qui implémente juste cette option. Il est disponible ici, sans aucune garantie, etc,... Il semble néanmoins fonctionner correctement sur les serveurs de numérivienne...