Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 仅当用户处于活动状态时JQUERY轮询MYSQL数据库_Php_Jquery_Mysql - Fatal编程技术网

Php 仅当用户处于活动状态时JQUERY轮询MYSQL数据库

Php 仅当用户处于活动状态时JQUERY轮询MYSQL数据库,php,jquery,mysql,Php,Jquery,Mysql,我正在构建一个交互式页面,其中会显示聊天框和项目列表 我打算使用JQUERY的.post()函数每30秒更新一次这两个页面,但我意识到许多用户每天24小时都在标签页中打开网页,这给服务器带来了沉重的负担 为了防止这种情况发生并优化我的资源,我希望仅当用户在页面上处于活动状态时,才每隔30秒执行一次数据库轮询;在被动情况下,我希望进行5分钟的投票 我怎样才能做到这一点?(我正在使用PHP和MYSQL)也许您可以创建一个基于事件的函数?但我想这取决于“活动”的定义。也许可以尝试检测光标位置的变化 在

我正在构建一个交互式页面,其中会显示聊天框和项目列表

我打算使用JQUERY的.post()函数每30秒更新一次这两个页面,但我意识到许多用户每天24小时都在标签页中打开网页,这给服务器带来了沉重的负担

为了防止这种情况发生并优化我的资源,我希望仅当用户在页面上处于活动状态时,才每隔30秒执行一次数据库轮询;在被动情况下,我希望进行5分钟的投票


我怎样才能做到这一点?(我正在使用PHP和MYSQL)

也许您可以创建一个基于事件的函数?但我想这取决于“活动”的定义。

也许可以尝试检测光标位置的变化

  • 在页面上加载启动setInterval方法以向PHP发送请求
  • 添加一个临时设置间隔以检查用户光标是否正在移动
  • 如果没有,请等待一段时间,然后清除1间隔
  • 如果是,允许间隔正常工作
  • 若用户转到其他选项卡,我不确定光标位置检查方法将如何工作。我将为您准备测试(仅js)

    编辑: W3C实际上开始使用
    页面可见性
    作为文档属性:


    但现在是更好的解决方案。看看这个答案:

    定义“活动”是什么意思。首先告诉我们您使用什么作为后端。@WooCaSh PHP和MYSQLSo这都是关于如何定义活动的。您可以使用某种计时器倒计时,将其设置为非活动状态,并在任何时候滚动或聚焦输入、单击等。您可以重置倒计时。活动表示用户当前正在查看选项卡。我个人不知道如何检测:(