首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PHP,甚至1个请求超时

PHP PHP,甚至1个请求超时
EN

Stack Overflow用户
提问于 2013-02-20 14:21:10
回答 2查看 1.6K关注 0票数 1

我一直在使用下面的脚本,但是,我希望它ping 3-4次,在这3-4次中,如果它有一个请求超时,我希望php返回失败。

下面是我正在使用的脚本:

代码语言:javascript
复制
 <?php

function pingAddressHasNeverFailed($tries) {
    for ($i = 0; $i < $tries; $i++) {
        $pingresult = shell_exec("ping -c 1 www.google.com", $outcome, $status);
        if ($status != 0)
            return false;
    }
    return true;
}

if (pingAddressHasNeverFailed(3)) {
    echo "uoc gi";
}
?>

如果可以的话请帮忙,提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-20 14:52:27

如果任何ping失败(在一个集合中),它的输出中将不会有0% (即0%丢包),这在Linux和Windows中是相同的:

代码语言:javascript
复制
function ping($host, $times = 3)
{
  exec("/bin/ping -c 3 $host", $out, $status);

  return $status === 0 && false !== strpos(join('', $out), '0%');
}

if (ping('www.google.com)) {
  echo "yay\n";
} else {
  echo "oh dear\n";
}

您可能需要调整ping参数以适合您的环境,并确保主机名已被清理。

票数 2
EN

Stack Overflow用户

发布于 2013-02-20 14:27:38

在这种情况下,您需要执行命令n次(n是尝试的次数)。例如:

代码语言:javascript
复制
function pingAddressHasNeverFailed($tries) {
    $outcome = array();
    $status = -1;

    for ($i = 0; $i < $tries; $i++) {
        $pingresult = exec("/bin/ping -n 1 www.google.com", $outcome, $status);
        if ($status != 0)
            return false;
    }
    return true;
}

用法:

代码语言:javascript
复制
if (pingAddressHasNeverFailed(3)) {
    //do something useful
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14973498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档