@V1adDone
Веб разработчик

Как организовать параллельный пинг локальных машин с нескольких серверов с помощью PHP?

Доброго времени суток всем. Есть большая сеть, в ней ~1000 машин. Имеется несколько серверов, на которых стоит PHP с Apache на MS Windows Server, есть 2 БД MS SQL, задача в том, чтобы пинговать все машины в сети и рисовать карту сети, с рисованием проблемы нет, вопрос в том как их все пинговать?

Изначально задача минимум была с 1 сервером и 1 бд, пинговал их все последовательно через exec(ping...) раз в нное количество времени, писал в бд, потом оттуда читал, занимало довольно(даже очень) много времени, пытался делать разными потоками через curl_multi, но т.к. по http почти все машины не видны, 99% машин отвечают OFFLINE.
Как организовать параллельный пинг всех машин хотя бы с 1 сервера? Насколько я понял pthreads использовать можно только на linux-сервере, в моем же случае это MS. Можно ли реализовать exec(ping...) многопоточно?
Задача максимум - разбить пинг машин на несколько серверов, писать в базы (реплики), заходить на морду с одного сервера, читать инфу из бд и уже отрисовывать. Необходимо минимизировать время пинга. Однако стоит учесть что пинг всех машин должен идти постоянно, то есть если машина отключилась, должно быть это видно максимально быстро.

Честно говоря, когда столкнулся с этой задачей подумал что это далеко не задача PHP и вовсе не для этого он нужен, однако задача есть, и решение необходимо, а мой вариант с последовательным пингом занимает непростительно много времени. Так же хочу отметить что необходимо использовать только нативные средства, как бы абсурдно это ни было. Нет возможности использовать такие инструменты как nagios и т.д.
  • Вопрос задан
  • 731 просмотр
Пригласить эксперта
Ответы на вопрос 2
okwinza
@okwinza
PHP Developer
php.net/manual/en/book.gearman.php
gearman.org/getting-started

Устанавливаем, прописываем задачи, ассигним задачи воркерам, запускаем.
Ответ написан
@OLQLOSH
Системный администратор
Пользуюсь этой штукой, удобно - argus.tcp4me.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы