Проверить активность соединения

211
22 октября 2017, 23:09

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

Задача - проверить, какое соединение активно. Желательно побыстрее... Что пробовал: создал файл на сервере и проверяю по какому запросу (через какой IP) он доступен. Но...

is_readable, file_exists - ложь при активном соединении

fopen, file_get_contents - соответствуют ситуации, но "крутятся" довольно долго

get_headers - иногда не срабатывает (не дает заголовки, хотя файл открывается или отдается)

Вопросы: Как лучше всего проверить активность соединения? Логичный ли путь я избрал? Может, идея читать файл не лучшая, а стоит попробовать коннектиться к БД?

Answer 1

"fopen, file_get_contents" - соответствуют ситуации, но "крутятся" довольно долго.

И, тем не менее, самый надёжный способ проверить, доступен ли сервер по определённому IP-адресу - это попробовать соединиться. Сетевое соединение это долго в любом случае (если только не с гарантированно работающим сервером в одном дата-центре), поэтому имеет смысл эту проверку делать как-то асинхронно и регулярно. Например по крону запускать скрипт, который будет проверять соединение и записывать IP-адрес в простой файл. Так что когда появляется необходимость воспользоваться соединением, уже известно по какому адресу нужно обращаться - считать его из файла.

Вообще, похоже вам нужно посмотреть в сторону какого-то load-balancer'а (LB). Например HAProxy. Принцип такой, что этот LB слушает локальный порт, который и будет использовать ваш сайт. А LB уже автоматически направляет запрос на нужный внешний ресурс, автоматически мониторя, какой из них доступен.

Вот пара описаний настройки HAProxy для такой конфигурации (на английском; если в английском не сильны, можно поискать аналогичное по-русски): https://www.haproxy.com/blog/failover-and-worst-case-management-with-haproxy/ https://serverfault.com/questions/473445/haproxy-switch-only-in-case-of-server-down

READ ALSO
Как к элементу массива, присвоить данные с поля?

Как к элементу массива, присвоить данные с поля?

Как к элементу массива UserName, присвоить данные с input type="text"?

198
Как смогли обойти проверку и украсть средства?

Как смогли обойти проверку и украсть средства?

Ребят, приветствуюНа сайте случалась ситуация, что один из пользователей смог обойти проверку и украсть средства

213
PHP поиск в многомерном массиве

PHP поиск в многомерном массиве

Дан список студентов, необходимо сделать выборку и вывести список студентов которые проживают в общежитии и получают стипендиюКак искать...

246
Нужно записать массив в файл

Нужно записать массив в файл

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

158