Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ping客户端的最佳方式_Php_Unix_Network Programming - Fatal编程技术网

Php ping客户端的最佳方式

Php ping客户端的最佳方式,php,unix,network-programming,Php,Unix,Network Programming,好的,我有一个PHP脚本,服务器ping是一个客户端。我面临的问题是,有时服务器无法联系客户机,尽管当我手动ping客户机时,它ping成功 我使用的ping命令是thisping-q-w3-c1 ping客户端的最佳方式是什么?如果ping在重试之前失败,可能会2/3次,然后像2/3秒的间隔那样离开。由于您处于unix环境中,因此始终可以创建并调用shell脚本来处理循环和等待。但我很惊讶,你不能在php内部做到这一点 另外,我不确定您的示例ping命令,我检查的两个不同的环境对您提到的选项的

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

我使用的ping命令是this
ping-q-w3-c1


ping客户端的最佳方式是什么?如果ping在重试之前失败,可能会2/3次,然后像2/3秒的间隔那样离开

由于您处于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
我希望这有帮助


另外,由于您看起来是一个新用户,如果您得到的答案有助于您记住将其标记为已接受,和/或给它一个+(或-)作为有用的答案。

由于您在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
我希望这有帮助


另外,由于您看起来是一个新用户,如果您得到的答案有助于您记住将其标记为已接受,和/或将其作为有用的答案,并给它一个+(或-)作为有用的答案。

对于php,您可以尝试PEAR的Net_-PING软件包

这里有一个链接可以引导您通过它
对于php,您可以尝试PEAR的Net\u-PING包

这里有一个链接可以引导您通过它

说upvote需要15次重复,回答得很好,非常感谢。当我得到15次时,我会向上投票。说向上投票需要15次,回答得很好,非常感谢。当我得到15次重复时,我将向上投票。