Php 检查移动应用程序中的用户是否在线

Php 检查移动应用程序中的用户是否在线,php,ios,mobile,mobile-application,Php,Ios,Mobile,Mobile Application,我正在开发一个iOS应用程序,我想检查一个特定的用户是否在线。 我的第一个想法是以5秒的间隔周期性地将异步连接从应用程序发送到php页面,该页面通过插入当前日期和时间来更新数据库中的字段。然后,为了查看特定用户是否在线,应用程序每5秒从数据库中获取一次数据,并将其与当前时间进行比较:如果当前时间大于收集的数据(大于5秒),则表示该用户处于脱机状态,否则为在线状态。这是可行的,但即时消息应用程序肯定不会使用这种方法,因为它太昂贵了。应该采用哪种方法 我希望我自己解释一下,谢谢 以下是我如何解决这个

我正在开发一个iOS应用程序,我想检查一个特定的用户是否在线。 我的第一个想法是以5秒的间隔周期性地将异步连接从应用程序发送到php页面,该页面通过插入当前日期和时间来更新数据库中的字段。然后,为了查看特定用户是否在线,应用程序每5秒从数据库中获取一次数据,并将其与当前时间进行比较:如果当前时间大于收集的数据(大于5秒),则表示该用户处于脱机状态,否则为在线状态。这是可行的,但即时消息应用程序肯定不会使用这种方法,因为它太昂贵了。应该采用哪种方法


我希望我自己解释一下,谢谢

以下是我如何解决这个问题:

  • 让应用程序为IOS设备分配唯一ID。(我会将其保存在NSUserDefaults中)
  • 当应用程序启动时,检查url以获得响应(即:检查用户是否在线)
  • 连接到服务器,如果尚未连接,请将唯一密钥与其他条目进行比较
  • 如果整个条目历史记录中没有其他条目,则设置另一个NSUserDefault(BOOL) 告诉应用程序不再需要再次检查
  • 这个唯一的密钥现在成为某种“登录”,可以传输到服务器
  • (可选)让用户填写信息,这样服务器就可以将密钥与个人/统计信息/任何信息关联起来,而不仅仅是一个单独的密钥并上传此信息(如果这样做了,那么苹果要求您警告用户他们的信息正在被窃取。)
  • 让设备每隔一段时间向服务器发送一条消息,告诉它“嘿,我还活着”
  • 让服务器每隔一段时间循环一次(我会说是IOS设备发送“我还活着”消息的时间的两倍。即:如果设备每5秒通知服务器它仍然在线,让服务器每7.5-10秒检查一次列表和响应),并使用响应表中收集的信息删除在线密钥列表。如果IOS设备在服务器循环运行时未发送消息,则它不得联机 我可以看到你的时间戳在哪里,但是如果世界各地有多个用户有多个连接,你必须对日期和时间的输入和检查持宽容态度(尽管你似乎已经想到了这一点),因为一些用户的互联网响应时间比其他用户要长


    编辑:刚刚看到你关于即时通讯的最新信息。根据我的经验,如果你在移动设备上,它并不总是即时的(在我看来,当我通过Facebook在手机上与某人展开聊天时,他们的在线状态直到我发送消息/每一设定时间才会更新)。有时我会在手机到达电脑30秒到一分钟后收到信息。但这似乎是优先考虑的(即:如果我正在与一个人进行一次有大量信息来回传递的大型对话,沟通是非常即时的)-我只是想分享一下。

    好的,你的解决方案似乎很棒。我已经实现了一些关于这个的东西。我可以查看用户是否在线,将BOOL读入数据库。此BOOL每分钟从用户应用程序更新两次,并设置为TRUE,如果用户关闭应用程序,则设置为FALSE。现在,如果用户关闭应用程序时出现错误,我的BOOL不可能永远为真,所以我必须在服务器上执行这个循环。正如您所说,我的服务器应该这样做:如果BOOL为TRUE,并且在最后一分钟内没有更新,我必须将其标记为FALSE,这是一种超时。如何在数据库服务器端完成?抱歉,这花费了这么长时间。好的,我不能帮你的服务器方面的事情对不起:(我上了一些课程,但我不太自信给你编译的代码(已经有一段时间了)。如果你愿意,我可以解释我是如何攻击这一个的,但我没有代码给你。也许可以问一个更直接针对sql和服务器交互的新问题。祝你好运!