2013-03-28 29 views
0

我有一个使用LDAP认证的网站。我有两个活动目录服务器用于冗余。如果主服务器关闭,则认证应由备份服务器处理。我尝试使用以下来实现:如果ldap_connect失败,分配给它的变量应该是false?

$LDAP_SERVER = "10.100.10.1"; 
    $LDAP_SERVER_BACKUP = "10.100.10.2"; 

    $ldap_mycorp = ldap_connect($LDAP_SERVER); 

    if(!$ldap_mycorp){ 
    $ldap_mycorp = ldap_connect($LDAP_SERVER_BACKUP); 
    } 

但我注意到,如果主服务器连接失败,'ldap_connect($ LDAP_SERVER)返回资源ID,而不是假的,这意味着如果语句是没用过。

我想出了一个解决方法,在后面的脚本中添加了一些额外的代码,但是必须有解决方案来处理上述上下文中的问题?

回答

0

主机名参数可以是空格分隔的主机名列表。这意味着如果主服务器不可操作,则LDAP代码将与备份服务器通信。当代码超时尝试与主服务器通话时会有延迟,但事情仍然有效。

$LDAP_SERVERS = "10.100.10.1 10.100.10.2"; 
$ldap_mycorp = ldap_connect($LDAP_SERVERS); 
0

这是你在找什么? http://php.net/manual/en/function.ldap-error.php

我不知道什么时候返回没有错误,但它应该给你一个正确的方向迈出的一步。如果前面的失败给出了自动连接到多个服务器的答案,那么您仍然应该检查连接是否没有任何错误;)