2014-06-17 2 views
0

Я унаследовал проблему на сайте Joomla, работающем на PHP 5.5 на IIS 7.5. В настоящее время он обращается к SQL-серверу через наш брандмауэр как часть запроса, но этот сервер может быть не всегда доступен, поэтому я хотел убедиться, что скрипт справляется с этим изящно. Мы связываем сНастройка PHP на тайм-аут подключения ODBC IIS

$itemodbc = "Driver={SQL Server Native Client 10.0};Server=$itemserver;Database=$itemdatabase;"; 

$con = odbc_connect($itemodbc,$itemuser,$itempassword) or die('SQL connection error'); 

, но если я имитировать сервер недоступности путем изменения IP-адреса сервера это берет возрасты и в конечном итоге сценарий страницы (я считаю) аут ошибки. То, что я хочу сделать, - установить этот тайм-аут на 5 или 10 секунд, и если это произойдет, я смогу продолжить сценарий только с использованием локального содержимого базы данных сервера, но я не могу найти, где его установить. Я нашел запись mssql.connect_timeout в php.ini, но это не имеет никакого значения (я уверен, что это для вызовов mssql_connect, а не odbc_connect, поэтому это имеет смысл), и, похоже, быть эквивалентом ODBC, я также пытался добавить «Timeout = 10;» к строке подключения ODBC, но это также не работает. Охота вокруг google Я нашел то, что, похоже, является настройкой для системы Linux, но это явно не полезно. Где мне нужно установить это в Windows или мне нужно преобразовать его в другой тип подключения к базе данных?

ответ

1

Я предполагаю, что у вас есть это решение уже, но я бы использовал какой-то PHP-код для проверки, если сервер был в сети. Быстрый google показал, что это может быть возможным решением вашей проблемы (просто измените google.com на прямой маршрут на ваш сервер, возможно, на другой порт или, возможно, на что-то вроде server.companyhost.com)

function availableUrl($host, $port=80, $timeout=10) { 
    $fp = fSockOpen($host, $port, $errno, $errstr, $timeout); 
    return $fp!=false; 
} 

//Return "true" if the url is available, false if not. 
if (!availableUrl("www.google.com")) { 
    print " some message that the server is down with neat html that suits your needs "; 
    exit; 
}else{ 
    //the connection is ok... proceed 
} 
Смежные вопросы