Правильно, у меня есть PHP скрипт, где сервер ping клиент. Проблема, с которой я сталкиваюсь, заключается в том, что иногда сервер не может связаться с клиентом, хотя, когда я вручную пинговал клиент, он успешно выполняет ping.
Команда ping, которую я использую, это ping -q -w 3 -c 1 < ipaddresshere >
Каким будет лучший способ опроса клиентов, возможно, 2/3 раза, оставив как 2/3 второй пробел, если ping завершится неудачно перед повторением?
Как вы в среде unix, вы всегда можете сделать, а затем вызвать оболочку script для обработки циклов и ожидания. Но я удивлен, что вы не можете сделать это внутри php.
Кроме того, я не уверен в вашей команде ping для образца, в двух разных средах, которые я проверил, есть разные значения для опций, которые вы упоминаете, чем то, что вы, похоже, собираетесь использовать. Попробуйте man ping
ИЛИ ping --help
Ниже приведено script ниже, чтобы предоставить вам рамки для реализации ping-retry, но я не могу тратить на него много времени.
cat pingCheck.sh
#! /bin/bash -vx
IPaddr=$1
: ${maxPingTries:=3}
echo "maxPingTries=${maxPingTries}"
pingTries=0
while ${keepTryingToPing:-true} ; do
if ping -n 3 -r 1 ${IPaddr} ;then
keepTryingToPing=false
else
sleep ${sleepSecs:-3}
if (( ++pingTries >= maxPingTries )) ; then
printf "Execeeded count on ping attempts = ${maxPingTries}\n" 1>&2
keepTryingToPing=false
fi
fi
done
Надеюсь, это поможет.
P.S. как вы, кажется, новый пользователь, если вы получите ответ, который поможет вам не забыть отмечать его как принятый и/или дать ему + (или -) в качестве полезного ответа.
для php, вы можете попробовать пакет PEAR Net_PING.
вот ссылка, направляющая вас через нее http://www.codediesel.com/php/ping-a-server-using-php/