【问题标题】:Check if a remote site is online using AJAX?使用 AJAX 检查远程站点是否在线?
【发布时间】:2014-01-31 00:51:11
【问题描述】:

我的网站使用 PHP 的 cURL 检查 5 个不同的 URL,以判断它们是否在线。问题是加载页面花费的时间太长(特别是如果它正在检查的网站之一已关闭)。

我听说 jQuery 的 ajax 可以很好地工作,所以我尝试了以下代码:

<div class="alert alert-info" id="forum-blockland-us"><b>Checking...</b></div>
<script>
$.ajax({ type: "GET",
    url: "http://forum.blockland.us/",
    cache:false,
    success: function() { 
        $("#forum-blockland-us").addClass("alert-success");
        $("#forum-blockland-us").removeClass("alert-info");
        $("#forum-blockland-us").html("<b>Online</b>");
    },
    error: function() {
        $("#forum-blockland-us").addClass("alert-danger");
        $("#forum-blockland-us").removeClass("alert-info");
        $("#forum-blockland-us").html("<b>Offline</b>");
    }
});
</script>

但它总是返回错误,即使我知道网站 100% 在线。

【问题讨论】:

  • 参见documentation for .ajax()底部附近的“附加说明”。
  • 您是否考虑过使用较低技术的方法,例如将页面上的图像更改为位于服务器上的绿色在线图像,或者从每个服务器下载 javascript 来更改页面并告诉您其在线.

标签: javascript php jquery ajax curl


【解决方案1】:

如果站点是远程站点,由于Same Origin Policy,您很有可能无法使用 javascript 实现它。

然而,在 php 中,你可以只发出一个 HEAD 请求,这样它就不会加载内容,所以它会快得多。

希望这会有所帮助。干杯

【讨论】:

  • 我正在尝试这个。但是,之前的问题是当网站关闭时页面加载时间很长。如果使用 HEAD 时网站宕机了,还会需要很长时间吗?
  • 如果网站宕机了,和get或者post一样。诀窍是您必须指定最多 5 秒的 CURLOPT_TIMEOUT,因此 curl 不会花费更长的时间:)。检查 Alireza 发布的链接,此处描述:wrichards.com/blog/2009/05/php-check-if-a-url-exists-with-curl
  • 哦,我不知道 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 是不同的。我将 CURLOPT_TIMEOUT 设置为 3。
【解决方案2】:

正如@Edgar 所说,你最好用php 来做,如果你愿意,这就是:

function urlExists($url=NULL)  
{  
    if($url == NULL) return false;  
    $ch = curl_init($url);  
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);  
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    $data = curl_exec($ch);  
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
    curl_close($ch);  
    if($httpcode>=200 && $httpcode<300){  
        return true;  
    } else {  
        return false;  
    }  
}

Source

【讨论】:

  • 我应该说清楚,我以前用过 PHP。问题是,如果被检查的站点关闭,cURL 会极大地延长页面的加载时间。
猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
相关资源
最近更新 更多