Приветствую. суть такова:
Работает связка nginx+php-fpm.
пытаюсь получить данные из нашего контроллера домена с помощью OpenLdap
$ldap = ldap_connect($ldaphost,$ldapport) or die("Cant connect to LDAP Server");
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); //Включаем LDAP протокол версии 3
if ($ldap)
{
$bind = ldap_bind($ldap,$login,$password);
}
Когда контроллер домена доступен и работает, проблем нет, все как надо.
когда контроллер недоступен die("Cant connect to LDAP Server"); и if ($ldap) не помогают. т е $ldap в любом случае не false. это нормально т к в документации сказано что "Когда используется OpenLDAP 2.x.x , ldap_connect() будет всегда возвращать resource, поскольку она фактически не соединяется, а только инициализирует параметры соединения. "
апач, когда контроллер не доступен, пытается достучатся, не может, забивает и выполняет код дальше. $bind = ldap_bind($ldap,$login,$password) тупо возвращает false/
Но nginx на этой функции валится, в логи пишет
[error] 32059#0: *3002 upstream timed out (110: Connection timed out) while reading response header from upstream
Как мне обработать этот участок кода, что бы хотя бы выдать сообщение аля "Контроллер домена помер, обращайтесь к сисадмину". try catch не помог.