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



我目前正在为自己的社交网络(temal.cf(编程。

  • 用户可以注册、登录并与其他用户聊天
  • 如果用户1登录;last_login";将更新到当前时间;"状态";将变为";在线";在phpmyadmin数据库中
  • 如果用户1注销;"状态";至";离线">

因此,如果用户只是关闭浏览器或正在关闭选项卡,他将保持在线状态。这是个问题。

我现在解决这个问题的想法是

  • 每1或2分钟更新一行";last_login";数据库中
  • 如果用户1关闭浏览器,它将不再向数据库发送更新
  • 如果另一个用户检查用户1的在线状态,它将检查用户1当前时间和上次更新时间之间的差异
  • 如果超过2-3分钟,如果是,它应该说用户1处于离线状态,如果不是,它应该认为用户1处于在线状态

那么,我如何用php语言每分钟自动向sqlphpmyadmin数据库发送一条新记录呢?

这是不能通过的,只有PHP才能通过,你必须使用某种前端解决方案和后端解决方案

少数解决方案是:

  1. Socket.io
  2. 正在发送AJAX,每分钟使用setInterval。。。(这个主意很糟糕,但在某些情况下它会起作用(,然后用CRON脚本检查时间差异
  3. 每次你做任何后台活动都只更新你的DB时间,这对性能来说也是个糟糕的想法。。。,同样,如果你有像MyISAM或任何其他数据库引擎,他们有特定的数据库工作规则,例如MyISAM在更新单行时会锁定整个表。。。所以所有其他请求都必须等待
  4. 无尽的AJAX(wrost idea(,当你得到状态代码499时,你就知道发生了什么。。。但如果你这样做,那就有问题了

有很多解决方案,但大多数都很糟糕,你的老板不会高兴:D,最好是Soce.io,或者只做2次,每10分钟发送一次,如果你的应用程序在联机状态下有一些延迟,它就可以了。。。

最新更新