首页 > 编程知识 正文

php服务器管理用户离线时间(php服务器管理用户离线时间过长)

时间:2023-12-23 21:12:49 阅读:319481 作者:JUVZ

本文目录一览:

php利用session怎么判断用户已离线

方法有好多种,但应该都跟心跳请求类似。

首先用户打开一个页面后,页面里面会有段js脚本来反复请求一个地址,即判断用户是否在线的地址(跟新浪微博隔一段时间请求一个地址查看是否有新消息类似)

比如判断页面为A,打开的页面为B ,则B 内的js脚本以ajax请求的方式每隔1分钟来访问A,A可以记录下最后一次的请求时间,然后你就可以拿这个最后一次请求的时间来判断用户是否离线,比如B每隔1分钟发送一次请求,如果最后活动时间与当前时间相差两分钟,就可以认为用户已离线。

还有一种方法,就是利用js的onunload事件

当用户关闭浏览器的时候,可以用onunload发送一个请求,注销掉session,或者将用户状态置为离线,都可以,不过没有上面靠谱就是,因为F5刷新页面也同样触onunload事件

方法还有很多,结合你需要实现的功能和业务,多想想就出来了

PHP如何获取本地时间与服务器时间

PHP获取服务器时间和本地时间很简单,可以用内置函数实现,具体代码如下:

记得给分!!!

?php

 //获取服务器时间

    echo date("Y-m-d h:i:s");

 //获取本地时间(也可以说是你所在时区时间)

    date_default_timezone_set('地区'); //地区:中国是PRC,或shanghai,chongqing都可

    echo date("Y-m-d h:i:s");

?

当然获取本地时间还可以用JS实现,如下:

script type="text/javascript"

function showLocale(objD){

var str,colorhead,colorfoot;

var yy = objD.getYear();

if(yy1900) yy = yy+1900;

var MM = objD.getMonth()+1;

if(MM10) MM = '0' + MM;

var dd = objD.getDate();

if(dd10) dd = '0' + dd;

var hh = objD.getHours();

if(hh10) hh = '0' + hh;

var mm = objD.getMinutes();

if(mm10) mm = '0' + mm;

var ss = objD.getSeconds();

if(ss10) ss = '0' + ss;

var ww = objD.getDay();

if  ( ww==0 )  colorhead="font color="#000000"";

if  ( ww  0  ww  6 )  colorhead="font color="#000000"";

if  ( ww==6 )  colorhead="font color="#000000"";

if  (ww==0)  ww="星期日";

if  (ww==1)  ww="星期一";

if  (ww==2)  ww="星期二";

if  (ww==3)  ww="星期三";

if  (ww==4)  ww="星期四";

if  (ww==5)  ww="星期五";

if  (ww==6)  ww="星期六";

colorfoot="/font"

str = colorhead + yy + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + ss + "  " + ww + colorfoot;

return(str);

}

function tick(){

var today;

today = new Date();

document.getElementById("localtime").innerHTML = showLocale(today);

window.setTimeout("tick()", 1000);

}

tick();

/script

php做用户在线与离线状态

在用户表里加个session字段存取时间戳。在文件头每次刷新就更新它。一定时间不刷新就表示人物离线了。读取这个会员数据的时候和当前时间戳对比小于一定数就离线了

怎么判断用户是在线状态还是离线状态 asp

判断用户的在线状态,后台代码必须和前台代码配合方能做到,通常前台代码用javascript编写,后台asp jsp php aspx都可以,以asp为例。

大体有两种思路。

一是即时刷新型,也就是前台每隔几秒向后台报告一下自己还在线。在后台数据库内或是Application对象中写入刷新的时间,后台管理员可以读取用户在线时间,如果超过规定的时间未刷新,则可判断用户已经离线。这种方式是使用最广泛的方式,判断准确无误,缺点是占用一定的系统资源,如果在线用户数量太多,对服务器的负荷压力比较大。

二是来去报告型。即上线报告自己来了,离线时报告自己走了,不必定时向后台报告自己是否在线,只要没报告自己离线,就认为仍然在线。技术上要依赖 DOM 的onload unload 事件,并在客户端建立cookie,在onload事件中把打开的网页数写入cookie,如cookie("OpenPageCount")++,只有当 cookie("OpenPageCount")==1 时才向后台报告自己上线,大于1只是说明多打开了几个网页而已,不必频繁向后台发送ajax请求,在unload事件中再把cookie减1,如cookie("OpenPageCount")--,直到为0才向后台发送离线状态ajax请求。这种方式准确率也不错,不必占用大量的服务器资源,主要工作都在客户端判断完成,缺点是兼容性不够好,笔者测试IE8+、FF等主流浏览器支持得都不错,但一些广泛使用的山寨浏览器对DOM事件支持不好,如360、遨游、TT、搜狗等。

相关关键技术点:

后台:数据库、Application对象、日期间隔

前台:javascript DOM Event Cookie setInterval

PHP服务器时间问题

date(‘Y-m-d H:i:s’)

结果取出来显示的时间总是于本地时间相差8个小时,我的本机是中国标准时间(GTM+8),问题应该是date()取的时间是格林威治时间,那应该怎么配置一下PHP服务器呢?

问题原因所在

从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的

也就是显示的时间(无论用什么php命令)都是格林威治标准时间

和我们的时间(北京时间)差了正好8个小时。

有以下3中方法可以恢复正常的时间。

1、最简单的方法就是不要用php5.1以上的版本

2、如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的

上面加上 date_default_timezone_set (‘XXX’);

3、一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号

date.timezone = PRC,重启http服务(如apache2或iis等)即可

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。