2013-08-28 2 views
1

ldap_connect을 사용하면 PHP 응용 프로그램의 LDAP 서버에서 작동하므로 제대로 작동합니다. 이제 시간 제한을 설정해야 요청이 오래 실행되면 요청이 취소됩니다.ldap_set_option이 시간 초과 옵션을 설정하지 않습니다.

$ldapconn = ldap_connect($ldap['host'], $ldap['port']) 
      or myExClass::throwException("unable to connect"); 
echo LDAP_OPT_TIMELIMIT; 
ldap_set_option ($ldapconn, LDAP_OPT_TIMELIMIT,1); 
ldap_set_option ($ldapconn, LDAP_OPT_NETWORK_TIMEOUT,1); 
echo LDAP_OPT_TIMELIMIT; 

echo가 디버깅을 위해 삽입이 들어 나는 다음 코드 줄에 다음과 같은 옵션을 설정합니다. 이 예제에서 나는 LDAP_OPT_TIMELIMIT 옵션이 변경되지 않았 음을 알았습니다. 4. ldap_set_option 전후.

왜 옵션이 변경되지 않습니까? 그 이유는 무엇일까요? 덧붙여서 : ldap_set_option의 반환 코드는 두 경우 모두 1입니다.

답변

2

LDAP_OPT_TIMELIMITldap_set_option()에 어떤 옵션을 설정할지 결정하기 위해 사용되는 플래그입니다. 그 값은 절대로 변경해서는 안됩니다. (ldap_set_option($ldapconn, LDAP_OPT_TIMELIMIT, 1);)은 LDAP_OPT_TIMELIMIT으로 설정하는 값입니다.

ldap_set_option으로 전화하면 TRUE이 올바르게 작동하는 것처럼 들립니다. ldap_get_option()으로 설정을 확인할 수 있습니다.

if(ldap_get_option($ldapconn, LDAP_OPT_TIMELIMIT, $retVal)) { 
    echo $retVal; 
} else { 
    echo "Uh oh. Couldn't retrieve value for LDAP_OPT_TIMELIMIT."; 
} 
+0

오 죄송합니다. 'echo LDAP_OPT_TIMELIMIT; 대신이 특정 옵션의 현재 값을 얻기 위해'ldap_get_option ($ ldapconn, LDAP_OPT_TIMELIMIT, $ retVal)'을 사용해야합니다.이 옵션의 내부 "숫자"만 가져옵니다. 따라서이 경우 옵션이 올바르지 만 오래 실행되는 요청은 여전히 ​​취소되지 않습니다. :-( –

+0

okay - 이유를 찾았습니다. ldap_search에는 ldap_connect 옵션을 덮어 쓰는 자체 timeout 매개 변수가 있습니다. –

관련 문제