如果ldap_connect失败,分配给它的变量应该为false?

时间:2013-03-28 14:25:16

标签: php

我有一个使用LDAP身份验证的网站。我有两个活动目录服务器用于冗余。如果主服务器关闭,则应由备份服务器处理身份验证。我尝试使用以下方法来实现这一目标:

  $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而不是false,这意味着永远不会使用if语句。

我想通过在脚本中添加一些额外的代码来解决这个问题,但是必须有一个解决方案来处理上述环境中的问题?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

我不知道在没有错误的情况下它会返回什么,但是它应该让你朝着正确的方向迈出一步。如果上一次失败,答案是自动连接到多个服务器,您仍应检查连接是否有任何错误;)