热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文目录一览:1、php利用session怎么判断用户已离线

本文目录一览:


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


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


  • 3、php做用户在线与离线状态


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


  • 5、PHP服务器时间问题

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等)即可


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
author-avatar
孙倩倩猫小窝W_199
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有