Jam*_*lor 10 javascript php ajax jquery
我正在尝试检测用户是否在一个选项卡中打开了我的网站,然后在另一个选项卡中打开它.然后,这应该在新打开的选项卡上向用户显示警告.
现在我每秒都会向服务器发送一个"保持活跃"的ajax调用.然后,这将使用唯一ID在数据库中记录"上次活动"时间.加载新页面时,它会检查该用户(由userID标识)是否在最近2秒内处于活动状态.
这感觉非常低效.当用户刷新页面时,它也不能很好地执行.(只需不到2秒钟).我做了2秒的检查比keepalive调用更长,以允许更慢的连接.
问)我是以正确的方式进行这种方式还是有更简单的方法来做到这一点?我听说Gmail和Facebook可能会做类似的事情,但我找不到他们这样做的网站功能.
实际代码使用了许多内部函数,所以这里是一般的想法:
伪代码:
Page load;
[index] PHP: Save tabsessionid, userid, datecreated, lastactive, phpsessionid into database;
[index] JS: Every second, send tabsessionid to keepalive.php
[keepalive] PHP: Check if another session exists in the last 2 seconds
[keepalive] PHP: If exists -> Return "-1"; else -> return "1";
[keepalive] PHP: Update tabsessionid's last active time.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些解决方案,但警告新的选项卡,而不是较旧的选项卡似乎是在减少延迟/时间方面的棘手部分.
您应该保留内容的版本,最初为 1,每次提交的编辑版本都会增加。提交的编辑必须包含版本号,该版本号将与当前版本进行比较,如果不匹配则拒绝编辑。还可以进行 ajax 调用来询问当前版本,并警告用户他的版本已过时。
sql 更新应该如下所示:
UPDATE table SET .... WHERE id = :id AND version = :version
Run Code Online (Sandbox Code Playgroud)
然后检查受影响的行,如果为0,则有并发更新。这样你就不会遇到竞争条件。
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |