2013-03-28 63 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

我不知道什麼時候返回沒有錯誤,但它應該給你一個正確的方向邁出的一步。如果前面的失敗給出了自動連接到多個服務器的答案,那麼您仍然應該檢查連接是否沒有任何錯誤;)