Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Php 在聊天室侧边栏中显示在线用户_Php_Jquery_Chat - Fatal编程技术网

Php 在聊天室侧边栏中显示在线用户

Php 在聊天室侧边栏中显示在线用户,php,jquery,chat,Php,Jquery,Chat,我为聊天室编程,但找不到在线和离线用户观看的方式。 我使用在线用户会话。当用户登录页面且会话不为空时,更新数据库并联机1。 现在如何知道用户从聊天室注销或关闭浏览器。我知道会话时间或catch可以做到这一点,但我不能编写合适的代码。有人能帮我把完整的代码放在这里吗? 谢谢你的回答 网上展览: session_start(); include("config.php"); connect(); $sql="SELECT `username` FROM `user` WHERE `online`=1

我为聊天室编程,但找不到在线和离线用户观看的方式。 我使用在线用户会话。当用户登录页面且会话不为空时,更新数据库并联机1。 现在如何知道用户从聊天室注销或关闭浏览器。我知道会话时间或catch可以做到这一点,但我不能编写合适的代码。有人能帮我把完整的代码放在这里吗? 谢谢你的回答

网上展览:

session_start();
include("config.php");
connect();
$sql="SELECT `username` FROM `user` WHERE `online`=1";
$result=mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($result)>0)
{
for ($i=0;$i<mysql_num_rows($result);$i++)
{
echo ('<b style="color:green;margin-left:10px;margin-top:10px;">'.mysql_result($result,$i,0).'</b><br>');
if($_SESSION['user']!=""
}
session_start();
包括(“config.php”);
connect();
$sql=“从`user`中选择`username`,其中`online`=1”;
$result=mysql\u query($sql)或die(mysql\u error());
如果(mysql_num_rows($result)>0)
{
对于($i=0;$i您可以使用简单的“if”操作来检查会话时间是否比realtime短

例如

在数据库中,使列成为用户中的最后一个_活动。当用户发送消息进行查询以更新该列时,使用time()进行最后一个活动

只需检查数据库中的最后一个_活动是否比timeout最短,在这种情况下,您可以为timeout设置$timeout变量。 以下是代码:

<?php # make while loop from users where online = 1
$last_activity_from_database = $row['last_activity']; 
$timeout                     = time()-600; # 10 minutes
if($last_activity_from_database < $timeout){
    mysql_query("UPDATE users SET online='0'");
}
?>
您可以使用简单的“if”操作来检查会话时间是否比realtime最短

例如

在数据库中,使列成为用户中的最后一个_活动。当用户发送消息进行查询以更新该列时,使用time()进行最后一个活动

只需检查数据库中的最后一个_活动是否比timeout最短,在这种情况下,您可以为timeout设置$timeout变量。 以下是代码:

<?php # make while loop from users where online = 1
$last_activity_from_database = $row['last_activity']; 
$timeout                     = time()-600; # 10 minutes
if($last_activity_from_database < $timeout){
    mysql_query("UPDATE users SET online='0'");
}
?>

您可以使用php脚本,该脚本按计划运行,当用户某段时间不在现场时,该计划会将状态更新为脱机

要做到这一点,您有时应该通过ajax将用户状态发送到服务器,并将其存储在数据库中

更新

js,jquery函数,用于每隔500毫秒向php发送状态

function upd_status() {
    $.get('/php.php', function(data) {
        setTimeout(upd_status,500);
    });
}
upd_status();
在php方面

// I do not know where is user id, but it should be in session
$uid = $_SESSION['user']['uid'];
settype($uid, 'int');

$sql = "UPDATE user SET status = 1, timestamp = ". time() ." WHERE id = ". $uid .";
关于cron脚本

$sql = "UPDATE user SET status = 0 WHERE timestamp < ". (time()-60*5); 
$sql=“更新用户集状态=0,其中时间戳<”(time()-60*5);

您可以使用php脚本,当用户不在现场时,该脚本将按计划运行,并将状态更新为脱机

要做到这一点,您有时应该通过ajax将用户状态发送到服务器,并将其存储在数据库中

更新

js,jquery函数,用于每隔500毫秒向php发送状态

function upd_status() {
    $.get('/php.php', function(data) {
        setTimeout(upd_status,500);
    });
}
upd_status();
在php方面

// I do not know where is user id, but it should be in session
$uid = $_SESSION['user']['uid'];
settype($uid, 'int');

$sql = "UPDATE user SET status = 1, timestamp = ". time() ." WHERE id = ". $uid .";
关于cron脚本

$sql = "UPDATE user SET status = 0 WHERE timestamp < ". (time()-60*5); 
$sql=“更新用户集状态=0,其中时间戳<”(time()-60*5);

您使用哪种技术进行实时通信?WebSocket或ajax longpolling或其他什么?我使用ajax查找在线用户和聊天您使用哪种技术进行实时通信?WebSocket或ajax longpolling或其他什么?当用户发送消息或创建e js函数检查每分钟,最后一个活动..可能用户只看到聊天室而不发送消息。我如何为这种情况创建js函数?当用户发送消息或创建js函数检查每分钟,最后一个活动..可能用户只看到聊天室而不发送消息。我如何为这种情况创建js函数?它将甚至通过mysql_query()也可以工作无需额外检查,但我建议对聊天室使用PDON cron脚本???和500ms,其中1000名在线用户可以是presure server?您可以使用任何调度程序。>500ms此值可能更大,它会根据负载设置。此外,这不仅仅是500ms,500ms+请求时间。PDO不适合,因为没有支持的循环sql selectit可以工作即使通过mysql_query()也可以无需额外检查,但我建议对聊天室使用PDON cron脚本???和500ms,其中1000名在线用户可以是Pressure server?您可以使用任何调度程序。>500ms此值可能更大,它会根据负载设置。此外,这不仅仅是500ms,500ms+请求时间。PDO不适合,因为没有支持的循环sql选择