问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP网站中,如何判断用户是否是在线的状态?

发布网友 发布时间:2022-04-06 00:40

我来回答

2个回答

懂视网 时间:2022-04-06 05:02

php判断页面是否关闭的方法:可以利用connection_status()函数来进行判断。如果该函数返回0,则表示连接运行正常;如果返回1,则表示连接由用户或网络错误终止。

相关函数介绍:

connection_status() 函数返回当前的连接状态。

(推荐教程:php视频教程)

可返回的可能值:

  • 0 - CONNECTION_NORMAL - 连接运行正常

  • 1 - CONNECTION_ABORTED - 连接由用户或网络错误终止

  • 2 - CONNECTION_TIMEOUT - 连接超时

  • 3 - CONNECTION_ABORTED & CONNECTION_TIMEOUT

  • 代码实现:

    echo str_repeat(" ",3000);
    ignore_user_abort(true); 
    mylog('online');
    while (true) {
     /*
     * 1、程序正常结束 connection_status 0
     * 2、点击浏览器“停止”按钮 connection_status 1
     * 3、超时 connection_status 2
     */
     echo "test<br>
    "; //注意程序一定要有输出,否则ABORTED状态是检测不到的
     flush();
     sleep(1);
     if (connection_status()!=0){
     mylog('offline');
     die('end the script');
     }
    }
    function mylog($str)
    {
     $fp = fopen('e:/abort.txt', 'a');
     $str = date('Y-m-d H:i:s').$str."
    ";
     fwrite($fp, $str);
     fclose($fp);
    }

    热心网友 时间:2022-04-06 02:10

    普通http网站是一种无状态连接,每次一个请求,一个应答,没有长连接状态。

    但是可以通过记录访问时间,来确定用户的状态。

    用户登录后,每次访问,更新一下最近访问时间在数据库里

    在用户页面的公共部分,做一个定时轮询,n秒一次(防止用户打开页面后放着不动,看资料或者做别的)

    服务器端做一个定时,将最近时间在n秒内的用户设为在线状态,将最近时间大于n秒的(说明已经关了页面),设为离线状态。 如果是普通 web空间无法配置定时器,可以在每次用户访问时处理一次(如果用户量大,需要做时间判断,防止同时访问量多时多次重复处理,影响服务器性能)

    如果能确定一个用户的访问,只有一个浏览器窗口,可以在窗口里加一个关闭事件(onbeforeunload),在此事件中发送一个退出请求,主动设为离线状态。这样状态管理会更完美一些

    这样基本就可以完成一个在线状态的管理。具体n 设为多少可根据情况而定,一般5-30秒都是合理的,太短了服务器压力比较大,太长了误差会比较大

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    评职称要满足什么条件?机会大吗? 晶码战士2图书信息 晶码战士2内容简介 福建慧舟信息科技有限公司怎么样? 平板电脑悬臂折叠支架平板电脑支架怎么用的 平板机身变形了怎么调整回来 温水加白醋泡脚有什么好处 家用投影仪灯泡能用多久? 投影机灯泡寿命一般有多长 如何延长投影仪灯泡寿命 逃跑吧少年小米版下载安装如何下载 php 里如何判断页面是否加载完毕 求助:PHP如何判断页面已经关闭 PHP中如何判断浏览器页面关闭 请提供PHP fopen,popen,fsocketopen详细说明及其相关实例。越深刻越好。 php popen 怎么传数组 PHP如何执行Linux系统命令呢?system();exec();popen();函数 _popen不能在子线程中执行么???(MFC) php通过popen获取的一个命令的返回值如何分析出来 dede:php无法执行,在线等急。 关于python中关于Popen()的错误,不明原因 请提供PHP popen详细说明及相关实例。越深刻越好。 win7 64位 wamp server:为何经过Apache服务器后不能执行system,popen,exec等函数了 请教关于popen执行后台命令的问题 php popen函数如何关闭 php exit(1) 不能退出用popen启动的进程 php函数问题,使用popen打不开文件 使用php的popen函数在命令行下可以直接执行,但是在web请求下却没有反应,system,exec也都试过了不行 php提取json数据 php 读取 json 里面的字段内容 问大佬php中如何用 foreach解析json 用php的if语句判断:页面提示文字,点击则实行下行代码,不点击,5秒后自动关闭页面。 PHP 怎么判断页面是否有操作 php怎么判断一个网站页面? 在php 编程中.怎么能判定用户是否停留在某个页面上? 如何判断php页面离开或跳转,并销毁 session 在php的模板页面怎么做判断,下面是我的详细介绍 thinkphp 判断页面 php如何判断网页文件能否打开或者是否存在 PHP判断页面在指定时间内是否完全加载,否则就刷新,求代码 php怎样判断用户退出登录? PHP当前页面条件判断 php中如何判断某段程序是否正在执行 php中页面及条件判断? php程序怎么检查cookie是否被禁用? php 怎么判断从一个页面返回之前的页面 如何对PHP数组进行排序 PHP数组重新排序 PHP数组排序 php数组排序问题 php用系统函数将一个数组按另一个数组的值进行排序