ping客户端的最佳方式

时间:2011-05-16 11:40:33

标签: php unix network-programming

是的,我有一个 PHP脚本,服务器ping是一个客户端。我面临的问题是,有时服务器无法联系客户端,但是当我手动ping客户端时,ping成功。

我使用的ping命令是ping -q -w 3 -c 1 < ipaddresshere >

如果在重试之前ping失败,那么ping客户端的最佳方式可能是 2/3次,就像 2/3秒差距一样?

2 个答案:

答案 0 :(得分:1)

当您在unix环境中时,您始终可以创建然后调用shell脚本来处理循环和等待。但我很惊讶你不能在php里面这样做。

另外,我不确定你的示例ping命令,我检查的两个不同的环境似乎对你提到的选项有不同的含义,而不是你想要的。试试man pingping --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/