繁体   English   中英

如何在 php 中每分钟自动将新记录发送到 mysql 行

[英]How to automatically send new record to mysql row every minute in php

我目前正在编写自己的社交网络 (temal.cf)。 用户可以注册、登录和与其他用户聊天。 如果用户 1 登录,则 phpmyadmin 数据库中的“last_login”行将更新为当前时间,“status”行将更改为“online”。 如果用户 1 注销,它会将“状态”行设置为“离线”。 因此,如果用户只是关闭浏览器或关闭选项卡,他将保持在线状态。 那是个问题。 我现在解决这个问题的想法是每 1 或 2 分钟更新一次数据库中的“last_login”行。 如果用户 1 关闭他的浏览器,它将不再向数据库发送更新。 如果另一个用户检查用户1的在线状态,它会检查当前时间和用户1上次登录时间之间的时间差是否超过2-3分钟,如果是,应该说用户1 离线,如果没有,应该说用户 1 在线。

那么如何以 php 语言每分钟自动向 sql phpmyadmin 数据库发送一条新记录?

(我知道我的英语很糟糕,对不起:/)

仅使用 PHP 这是不可行的,您必须使用某种前端解决方案和后端解决方案

几个解决方案是:

  1. Socket.io
  2. 发送 AJAX,每分钟使用 setInterval...(糟糕的想法,但在某些情况下会起作用),然后检查 CRON 脚本时间差异...
  3. 每次您进行任何 backednd 活动时,只需更新您的数据库时间,这对于性能也是一个糟糕的想法......,如果您有像 MyISAM 或任何其他数据库引擎,他们有特定的数据库工作规则,例如 MyISAM 将在更新时锁定整个表单行......所以所有其他请求都必须等待
  4. 没完没了的 AJAX (错误的想法),当你得到状态码 499 时,你就知道发生了什么……但如果你这样做,那就有问题了……
  5. ……

有很多解决方案,但其中大多数都很糟糕,您的 BOSS 不会高兴:D,最好是 Socet.io 适合您的情况,或者只需执行 2 次并每 10 分钟发送一次,如果您的应用程序有一些,它的 OKEY在线状态延迟...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM