php - Ping 服务器 + 进度条然后显示不同的 div

标签 php jquery css twitter-bootstrap ping

基本上我使用的是 Bootstrap 3 RC2。我希望能够通过 PHP ping 服务器。我在谷歌上找到了这个脚本。

<?php
// Script by Akensai

if (!$socket = @fsockopen("YOUR.IP.HERE", 80, $errno, $errstr, 30))
{
  echo "<font color='red'><strong>Offline!</strong></font>";
}
else 
{
  echo "<font color='green'><strong>Online!/strong></font>";


  fclose($socket);
}

?>

我知道我可以将在线/离线回显更改为 Bootstrap 元素,例如 100% 进度条。

我想知道的是在 ping 服务器时如何让进度条从 0%-100% 移动。默认情况下,加载时进度条为蓝色,成功则变为绿色,失败则变为红色。 Bootstrap 通过简单地更改进度条 DIV 中的类来提供这些选项。

我知道这可能看起来不切实际,因为 ping 通常非常快,但我仍然想知道如何使用该功能以供将来引用。

有什么建议吗?

最佳答案

我将向您演示它是如何仅使用 jquery 完成的,我并没有太多地使用 bootstrap。

首先让我们假设我们有与您所做的类似的服务器代码。

$json = array();
if ($socket = fsockopen($_POST['ip'], 80, $errno, $errstr, 30)) {
   $json = array('status' => 1);
   fclose($socket);
} else {
   $json = array('status' => 0);
}

header("Content-Type: application/json");
echo json_encode($json);

我们有一个服务器脚本,我们可以从客户端调用它,它会返回一个 json 响应。

在 html 端,我们有以下进度条。

<progress id='progress' max=100></progress>

然后我们有以下调用脚本的 jquery 代码

$(function () {
    var options = {
         url: '/script.php',
         data: { ip : '127.0.0.1' },
         type: 'POST',
        dataType: 'json',
        success: function (json) {
           if (json.status  == 1) $("#progress").val($('#progress').val() + 10);
        }
    };
    $.ajax(options);
});

您需要使用 setInterval 或其他排队方法进行此 ajax 调用,以便在 ping 完成之前发出 ping 信号。 请注意,我从您的 fsockopen 中删除了 @,这是一个不好的做法。 Read

关于php - Ping 服务器 + 进度条然后显示不同的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306243/

相关文章:

php - Drupal 7 异常 'EntityMalformedException' 试图运行搜索索引 cron

javascript - Vue 路由器和 Laravel 中间件

javascript - 如何添加提交表单的 5 分钟 JavaScript 倒计时器

javascript - JQuery/JavaScript 机制来调度方法

javascript - Jquery "refuses"更新CSS?

javascript - onBlur 事件与 selectize.js

css - 一个 css 样式表中的媒体查询差异屏幕大小

php - 签名版本 4 签名过程在 PHP 中访问 API 网关端点

php - 从不同的网页中选择图像

javascript - Div 覆盖在 Firefox 和 Explorer 中不起作用