2011-05-16 139 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

相關問題