對,我有一個PHP腳本在工作,其中服務器ping的客戶端。我面臨的問題是,有時服務器無法聯繫客戶端,但是當我手動ping客戶端時,它就能ping通。最好的方式來ping客戶端
我使用ping命令是這個ping -q -w 3 -c 1 <ipaddresshere>
什麼是查驗客戶也許2/3倍留下像2/3第二間隙如果平之前失敗的最好方法重試?
對,我有一個PHP腳本在工作,其中服務器ping的客戶端。我面臨的問題是,有時服務器無法聯繫客戶端,但是當我手動ping客戶端時,它就能ping通。最好的方式來ping客戶端
我使用ping命令是這個ping -q -w 3 -c 1 <ipaddresshere>
什麼是查驗客戶也許2/3倍留下像2/3第二間隙如果平之前失敗的最好方法重試?
因爲您處於unix環境中,您可以隨時調用shell腳本來處理循環和等待。但我很驚訝,你不能這樣做的PHP內。
此外,我不確定您的示例ping命令,我檢查的2個不同環境似乎對您提到的選項有不同的含義,而不是您似乎打算的。嘗試man ping
或ping --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.因爲你似乎是一個新用戶,如果你得到一個可以幫助你的答案,請記住將它標記爲已接受,並且/或者給它一個+(或 - )作爲有用的答案。
對於php,你可以試試PEAR的Net_PING包。
這裏是一個鏈接引導你通過它 http://www.codediesel.com/php/ping-a-server-using-php/
說給予好評需要15次,偉大的回答,非常感謝。當我拿到15個代表時,我會積極投票。 – unleashed 2011-05-20 11:24:25
很久以前,我爲他挺身而出。 :) – 2015-06-09 17:31:59
@GinzoMilani:tnx! – shellter 2015-06-09 18:17:25