Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
用于检测目标状态的javascript或PHP选项_Php_Javascript_Curl_Status_Aim - Fatal编程技术网

用于检测目标状态的javascript或PHP选项

用于检测目标状态的javascript或PHP选项,php,javascript,curl,status,aim,Php,Javascript,Curl,Status,Aim,该网站是 我用于状态指示器的代码是 <img src="http://big.oscar.aol.com/imperialpalaces?on_url=http://www.ipalaces.org/support/widget/status_green.gif&off_url=http://www.ipalaces.org/support/widget/status_offline.gif"> 这段代码的问题是,出于某种原因,在随机时间,它可能需要12秒才能实际检索结果。

该网站是

我用于状态指示器的代码是

<img src="http://big.oscar.aol.com/imperialpalaces?on_url=http://www.ipalaces.org/support/widget/status_green.gif&off_url=http://www.ipalaces.org/support/widget/status_offline.gif">
这段代码的问题是,出于某种原因,在随机时间,它可能需要12秒才能实际检索结果。而标准的img技巧几乎是即时的

卷曲是否存在已知问题?有没有更快的办法


我看到有人试图读取img标记的.src并执行类似的if语句,但我无法让它工作。

为了避免在事情不顺利时等待十几秒,您可以设置更多选项,如(请参阅):

  • CURLOPT_CONNECTTIMEOUT
    :尝试连接时等待的秒数。使用0无限期等待。
    • 将其设置为几秒钟就足够了
  • CURLOPT_TIMEOUT
    :允许cURL函数执行的最大秒数。
    • 这个也一样
  • CURLOPT\u DNS\u CACHE\u TIMEOUT
    :将DNS条目保留在内存中的秒数。默认情况下,此选项设置为120(2分钟)。
    • 您可能会将其设置为更高的值
如果您网站的用户通常停留在该网站上的时间超过一到两页,那么将该信息存储在
$\u SESSION
中并偶尔获取一次可能会很有趣

例如,只有在会话中存储的值在5分钟前已获取时,才能获取它。这可能会节省几次通话:-)


另一种方法可能是在客户端执行此操作:

  • 使用
    标记获取图像
  • 如果是“在线”,请使用加载OK的图像
    • 在图像的“
      加载”
      ”上插入一个处理程序,用一些文本替换它
  • 如果是“脱机”,请使用404中的图像
    • 在图像的“
      错误”
      ”上插入一个处理程序,用一些文本替换它
这不是很好(它有点“黑客”,用错误的方式),但它应该可以工作;-)

您的图像如下所示:

<div id="arround-1">
    <img id="img-1" src="http://big.oscar.aol.com/imperialpalaces?on_url=http://www.ipalaces.org/support/widget/status_green.gif&amp;off_url=http://this.is-a-404-error.com"
        onload="replace_img_status(1, 1);"
        onerror="replace_img_status(1, 0);"
    />
</div>
如果
状态
1
,我们显示“在线”,在另一种情况下(“错误”),我们显示“离线”:-)


但是,即使它看起来很有效,我也不太喜欢Pascal的解决方案,但是对于任何想在PHP中使用它并且仍然感兴趣的人,我已经制作了一个小脚本来处理标题位置(返回离线/在线或URL末尾的任何内容)(例如,在_url=1时,在标题中返回位置:1)


<div id="arround-1">
    <img id="img-1" src="http://big.oscar.aol.com/imperialpalaces?on_url=http://www.ipalaces.org/support/widget/status_green.gif&amp;off_url=http://this.is-a-404-error.com"
        onload="replace_img_status(1, 1);"
        onerror="replace_img_status(1, 0);"
    />
</div>
<script type="text/javascript">
    var replace_img_status = function (num, status) {
        var div = document.getElementById('arround-' + num);
        if (div) {
            if (status == 1) {
                div.innerHTML = 'Online';
            } else {
                div.innerHTML = 'Offline';
            }
        }
    };
</script>
<?php
Define('Username', $_GET['sn']);
Define('URL', 'http://big.oscar.aol.com/' . Username . '?on_url=online&off_url=offline');
Define('Online', 'Location: online'); // Change online to whatever you have for on_url
Define('Offline', 'Location: offline'); // Change offline to whatever you have for off_url

$Response = Get_Headers(URL);

If(In_Array(Online, $Response)){
    Echo UCWords(StrToLower(Username)) . ' is currently online.';
}
ElseIf(In_Array(Offline, $Response)){
    Echo UCWords(StrToLower(Username)) . ' is currently offline, or has set their privacy settings.';
}
?>