如何使用PING方法检测用户是否在线(主动Internet连接)



我正在从事医生项目(web android(工作,当患者预订A令牌时,它首先检查医生是否在线;如果是在线患者可以预订。

为此,我使用了ping用户IP方法,即当患者提交令牌时,它会在医生的IP上进行,如果他在线(具有主动互联网连接(,则它会注册患者令牌。但这似乎无法正常工作,因为从ping获得的数据表示100%的数据包丢失。

无法使用在医生最后一个动作上触发的标志设置,这不是实时的。

请建议您是否有解决此问题的解决方案。

<?php
// unset variables first to avoid mixing the results from previous calls
// 0 for success, 1 for packet loss, 2 for other error.
$retval=-1;
$output=array();
exec("ping 127.0.0.1 -c2 -w2 2>&1",$output,$retval);
echo "Return code: ".$retval."<br>n";
echo implode("<br>n",$output);
?>

许多站点忽略ICMP(ping(。如果您的医生让他的机器关闭ICMP过滤,那可能会这样做。

在用户表中插入标志意味着在用户表中添加额外的列。当用户登录时,请打开标志。当用户可以注销该标志时。例如| is_login | 1

或| is_login | 0

那么,您可以从数据库查询并可以检查医生在线或离线。

很容易。

好吧,所以我如何理解您的问题,您想知道医生目前是否正在使用您的网站/应用程序。因此,这可以通过在数据库中添加一个字段来完成。让我们称此user_activity。现在,当用户登录您可以在此字段中存储时间时,您可以进行查询以查看最近5-10分钟的这个时间(根据您的要求(。现在,完成此操作后,您可以在每60秒内ping用户检查用户是否仍然存在,并且从这里也可以更新数据库字段。因此,您可以检查谁在线,谁不是。

var checkstatus = setInterval(function () {
    /* jQuery - back to server*/
    $.get("checkstatus.php");
 }, 60000);

问题通过JavaScript中的'eventsource'方法解决。

只包括var source = new EventSource("set_online.php");

在每个页面中包括上线。

然后在set_online.php设置在线状态标志上,该标志将在数据库中更新。

就是这样!只要您在该页面上设置了该页面用户,就表明他已连接到Internet。

最新更新