PHP делает запрос проверки, если клиент доступен через ip - PullRequest
0 голосов
/ 30 марта 2012

Я делаю сервер, который управляется php-скриптами, у меня есть клиенты (androidphones), которые вызывают эти скрипты для управления сервером. Я сохраняю IP, который получает php в БД.

Теперь я ищу способ проверить, доступны ли эти IP-адреса.

это то, что я пробовал до сих пор:

  • Cron job -> Я занимаюсь разработкой с использованием usbwebserver, поэтому я не могу использовать php из cmd

  • сделать ping-запрос к ip из скрипта php: если он доступен, он вернётся довольно «быстро», но если не получится, я получу ошибку максимального исключения. этот способ работы дает мне результаты, которых я хочу, но без возможности проделать это, это решение не будет работать вовремя, как я хотел. Есть ли способ, которым этот подход может работать?

  • что-то, что я рассматриваю: -

    • сделать запрос на отключение устройства через http, и сделать что-нибудь с результатом, который я получаю, возможно ли это вообще (сделать запрос от сервера к клиенту)?
    • создание сценария Python, который получает IP-адрес от базы данных, выполняет вызовы ping и сохраняет результаты обратно в базу данных.
    • создание меток времени при подключении устройства и проверка меток времени с других устройств, если максимальное время было превышено, обновите DB

есть предложения?

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Я бы сделал пинг клиенту, чтобы узнать, все ли он активен.

Попробуйте использовать сокеты для проверки связи с клиентом. Посмотрите здесь: http://www.php.net/manual/en/function.socket-create.php#101012

0 голосов
/ 30 марта 2012

Абсолютно нет смысла в такой проверке.
Эти IP-адреса всегда будут у вас.
Просто потому, что у клиента-андроида редко есть реальный IP-адрес, но используется сеть через некоторый маршрутизатор / прокси.* Сеть - это дорога с односторонним движением.Чтобы реализовать функцию сердцебиения, вы должны перевести своих клиентов на Android на сервер ping.

0 голосов
/ 30 марта 2012

Это не сработает, так как клиент всегда должен отвечать. Я предлагаю использовать клиент (например, в html, используя javascript), чтобы каждую минуту устанавливать соединение (ping) от вашего скрипта на клиенте к вашему серверу, а в ваших cronjobs запускать скрипт каждые х минут для обновления клиентов, которые не ' т в пределах х.

...