gpt4 book ai didi

php - 用于检测 AIM 状态的 javascript 或 PHP 选项

转载 作者:可可西里 更新时间:2023-11-01 13:23:42 26 4
gpt4 key购买 nike

网址是http://www.ipalaces.org/support/

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

<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">

这是 big.oscar.aol.com 允许您做的一件巧妙的事情,它会将其重定向到您为 on_url 设置的任何图像(如果它们在线),对于离线的 off_url 也是如此。但是,我想在 PHP 或 javascript 的 if 语句中使用它来显示不同的内容。目前我正在使用这个:

function getaim($screenname) {
$ch = curl_init();
$url = "http://big.oscar.aol.com/$screenname?on_url=true&off_url=false";
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// added to fix php 5.1.6 issue:
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);

if(eregi("true",$result)) {
return true;
} else {
return false;
}
}

If (getaim("ImperialPalaces")) { print "Online"; } else { print "Offline"; }

此代码的问题在于,出于某种原因,它有时可能需要长达 12 秒的时间才能实际检索结果。而标准的 img 技巧几乎是即时的。

curl 是否存在已知问题?有没有更快的方法?

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

最佳答案

为了避免在事情不正常时等待十几秒,您可以设置更多选项,例如(参见 curl_setopt ):

  • CURLOPT_CONNECTTIMEOUT :尝试连接时等待的秒数。使用 0 无限期等待。
    • 将它设置为几秒钟就足够了
  • CURLOPT_TIMEOUT :允许 cURL 函数执行的最大秒数。
    • 这个也一样
  • CURLOPT_DNS_CACHE_TIMEOUT :将 DNS 条目保留在内存中的秒数。此选项默认设置为 120(2 分钟)。
    • 您可以将其设置为更高的值

如果您网站的用户通常只停留一两页以上,那么将该信息存储在 $_SESSION 中可能会很有趣。 ,并且只偶尔获取一次。

例如,只有当 session 中存储的值在 5 分钟前被提取时,您才能提取它。它可能会节省几个电话:-)


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

  • 使用 <img> 获取图像标签
  • 如果是“在线”,请使用加载正常的图像
    • 在图像的“load”上插入一个处理程序,用一些文本替换它
  • 在“离线”的情况下,使用 404 中的图像
    • 在图像的“error”上插入一个处理程序,用一些文本替换它

这不是很好(它有点“hacky”,以错误的方式),但它应该工作 ;-)

你的形象会是这样的:

<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>

您会看到,如果用户已连接,<img>最终导致存在的图像;所以,“load”甚至会被解雇。

并且,在用户未连接的情况下,<img>最终会导致一个不存在的图像(它给出了一个 404 错误);因此,将触发“error”事件。

你现在必须处理这两种情况,像这样:

<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>

如果status1 ,我们显示“在线”,而在另一种情况下(“错误”),我们显示“离线”:-)

但是,即使它看起来有效,我也不太喜欢这个解决方案 ^^

关于php - 用于检测 AIM 状态的 javascript 或 PHP 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com