Как я знаю, что IP подключен / нормальный или отключен от локальной сети в PHP? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть база данных, где я сохранил все IP-адреса.Теперь я хочу знать, что эти IP-адреса подключены / нормальные или отключены.Я пробовал:

$add     = "example.com";
$result = checkdnsrr($add, "MX"); 
var_dump($result);

Возвращаемое логическое значение true или false.Но у меня есть IP-адрес, который не подключен DNS.Но как я могу узнать, что IP активен / нормален / подключен или отключен?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Если вы хотите проверить, жив ли сайт, то вы можете сделать это следующим образом:

$add     = "example.com";
$result = false;
if($fp = fsockopen($add, 80, $errno, $errstr, 10)){
    fclose($fp);
    $result = true;
}
var_dump($result);

// edit: так вы хотите знать, присутствует ли IP в вашей локальной сети?если это так, вы можете использовать пинг, как:

function ping($host, $timeout = 1) {
            /* ICMP ping packet with a pre-calculated checksum */
            $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
            $socket  = socket_create(AF_INET, SOCK_RAW, 1);
            socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
            socket_connect($socket, $host, null);

            $ts = microtime(true);
            socket_send($socket, $package, strLen($package), 0);
            if (socket_read($socket, 255))
                    $result = microtime(true) - $ts;
            else    $result = false;
            socket_close($socket);

            return $result;
}

$present = ping('192.168.0.100');
0 голосов
/ 27 декабря 2018

ДЛИННЫЙ ОПРОС ПЛОХО

Насколько я понял ваш вопрос, вы просто хотите проверить, подключен конкретный клиент или нет.

Вам нужно будет настроить работу cron в PHP с непрерывным циклом, который будет долго опрашиваться XHR (AJAX с Jquery и т. Д.), Устанавливая status = true.Таким образом, когда пользователь отключается, XHR будет сломан и статус будет set = false.Таким образом, вы можете проверить, подключен ли пользователь или нет. Тем не менее, обратите внимание, что Long Polling действительно ресурсоемкий и не приветствуется.

Я настоятельно рекомендую вам использовать go с Node и Websockets и т. Д.

Я мог бы написать код для задания PHP Cron и решить вашу проблему, но я не ценю за это Long Polling + Cron Job.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...