是的,我有一个 PHP脚本,服务器ping是一个客户端。我面临的问题是,有时服务器无法联系客户端,但是当我手动ping客户端时,ping成功。
我使用的ping命令是ping -q -w 3 -c 1 < ipaddresshere >
如果在重试之前ping失败,那么ping客户端的最佳方式可能是 2/3次,就像 2/3秒差距一样?
答案 0 :(得分:1)
当您在unix环境中时,您始终可以创建然后调用shell脚本来处理循环和等待。但我很惊讶你不能在php里面这样做。
另外,我不确定你的示例ping命令,我检查的两个不同的环境似乎对你提到的选项有不同的含义,而不是你想要的。试试man ping
或ping --help
下面的脚本应该为您提供实现ping重试的框架,但我不能花很多时间在它上面。
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。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。
答案 1 :(得分:0)
对于php,你可以试试PEAR的Net_PING包。
这是一个指导您完成它的链接 http://www.codediesel.com/php/ping-a-server-using-php/