2011-05-16 136 views
1

对,我有一个PHP脚本在工作,其中服务器ping的客户端。我面临的问题是,有时服务器无法联系客户端,但是当我手动ping客户端时,它就能ping通。最好的方式来ping客户端

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

什么是查验客户也许2/3倍留下像2/3第二间隙如果平之前失败的最好方法重试?

回答

1

因为您处于unix环境中,您可以随时调用shell脚本来处理循环和等待。但我很惊讶,你不能这样做的PHP内。

此外,我不确定您的示例ping命令,我检查的2个不同环境似乎对您提到的选项有不同的含义,而不是您似乎打算的。尝试man pingping --help

下面的脚本应该给你一个实现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.因为你似乎是一个新用户,如果你得到一个可以帮助你的答案,请记住将它标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。

+0

说给予好评需要15次,伟大的回答,非常感谢。当我拿到15个代表时,我会积极投票。 – unleashed 2011-05-20 11:24:25

+0

很久以前,我为他挺身而出。 :) – 2015-06-09 17:31:59

+0

@GinzoMilani:tnx! – shellter 2015-06-09 18:17:25

相关问题