Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка доступности удаленного сервера баз данных
 
 автор: DIM@   (05.10.2010 в 03:04)   письмо автору
 
 

Доброго времени суточек !

Есть задача при решении которой необходимо выполнять выборку данных с удаленных серверов баз данных, все бы ничего, но если удаленный сервер (его IP) или база данных не отвечают на запрос соединения, то страничка грузится очень долго.

Отсюда вытекает, надо как то проверить доступность удаленного сервера, а именно

1. Если не доступен полностью (IP адрес сервера не виден)
2. Если недоступна база данных (IP адрес сервера виден, порт к базе не виден)

какие могут быть варианты проверки удаленных серверов на работоспособность, да так, чтобы время работы скрипта было минимальным.

  Ответить  
 
 автор: Gubichev   (05.10.2010 в 03:23)   письмо автору
 
   для: DIM@   (05.10.2010 в 03:04)
 

Измените время таймаута, строка - mysql.connect_timeout

  Ответить  
 
 автор: DIM@   (05.10.2010 в 03:29)   письмо автору
 
   для: Gubichev   (05.10.2010 в 03:23)
 

Если бы всё было так просто, этот вариант я попробовал сразу, ну если сервер недоступен полностью, то этот параметр никак не влияет.

  Ответить  
 
 автор: mihdan   (05.10.2010 в 12:20)   письмо автору
 
   для: DIM@   (05.10.2010 в 03:04)
 

Поддерживаю. Сам столкнулся, в своё время, с данной проблемой, но ответа не нашел.

  Ответить  
 
 автор: mihdan   (10.10.2010 в 02:08)   письмо автору
 
   для: mihdan   (05.10.2010 в 12:20)
 

Up

  Ответить  
 
 автор: Саня   (10.10.2010 в 08:37)   письмо автору
 
   для: DIM@   (05.10.2010 в 03:04)
 

<?
// таймаут на подключение 5 сек
$fp fsockopen('example.com'80$errno$errstr5);

// сокет не открылся за требуемое время
if ( $errno ) {
  die(
"Подключение к серверу не удалось");
}

// таймаут на чтение 5 сек
stream_set_timeout($fp5);

fwrite($fp"HEAD / HTTP/1.0\r\nHost: example.com\r\n\r\n");
$buff '';
while ( !
feof($fp) ) $buff .= fread($fp1024);

// не уложились в таймаут
$meta stream_get_meta_data($fp);
if ( isset(
$meta['timed_out']) && $meta['timed_out'] ) {
  die(
"Подключение к серверу удалось, но оно тормозит");
}

Настраивайте таймауты по своему вкусу.

  Ответить  
 
 автор: Trianon   (10.10.2010 в 09:21)   письмо автору
 
   для: Саня   (10.10.2010 в 08:37)
 

вот только размер буфера я бы увеличил килобайт до восьми.
Чтоб надежно уложиться в один цикл чтения.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования