用于检测目标状态的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语句,但我无法让它工作。为了避免在事情不顺利时等待十几秒,您可以设置更多选项,如(请参阅):
:尝试连接时等待的秒数。使用0无限期等待。CURLOPT_CONNECTTIMEOUT
- 将其设置为几秒钟就足够了
:允许cURL函数执行的最大秒数。CURLOPT_TIMEOUT
- 这个也一样
:将DNS条目保留在内存中的秒数。默认情况下,此选项设置为120(2分钟)。CURLOPT\u DNS\u CACHE\u TIMEOUT
- 您可能会将其设置为更高的值
$\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&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&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.';
}
?>