我正在创建一个类似于Facebook的网站 - 通过诸如通知之类的内容使其相似。我真的没有看到如何让通知工作。好吧,我想出了如何通过查询从数据库中获取它们。
我认为该网站将遵循的结构将是针对不同应用程序的多个表格 - 即:照片将添加图片的ID,文件名和一些用户ID(如果'已标记'或其他内容)以及如何发送实时向用户提供的信息超出了我的范围。
所以我必须每隔几秒运行几次查询,扫描数据库表,找到状态为未读的所有应用程序表中找到的用户的$ _SESSION ['id']?
另一种可能性是每个用户都有自己的桌子吗?好多啊。洛尔。
或者只是一个通知表,其中最近的通知被推送到具有唯一ID和用户ID的表中?
我真的无法绕过这个,哈哈。
另外,实时显示通知?我知道Facebook使用长轮询并实时收到通知,但我不认为我可以留下大约5-10个查询(对于每个应用程序)在多个客户端的长轮询上运行,或者我完全崩溃了服务器,对吗?
关于我如何尝试为社交网站建立通知系统的任何建议/代码?如果没有,我想我会使用静态通知而不是任何实时。
然后再次,每隔几秒加载一次查询服务器,以便在每次页面加载时发出新通知?使用ajax意味着长时间的轮询,所以这是一个双输。
答案 0 :(得分:1)
我想说长轮询就是答案。 Gmail和Facebook都使用此方法进行实时通知。您唯一的另一种选择是带有数据服务的Flex,但这不是PHP。
在性能方面,查询一次只能从0-5个通知中获取,如果表被正确编入索引,并且查询编写得很好,那么这些查询中的5个将不会产生重大影响在你的服务器上。
此外,如果Gmail和Facebook正在这样做,那么您也可以这样做。当然,他们有大量的服务器来支持他们的所有用户,但我会说你没有那么多的用户,因此服务器技术现在可以使用。当你获得这么多用户时,你当前的服务器无法处理负载,那么你就会投入更新的更强大的用户。
答案 1 :(得分:1)
这是我对它的看法。
您可以为状态,照片和视频创建不同的表格。 每当有人对某个视频发表评论或者您可以进行查询以存储通知以及喜欢它的用户的信息时,您也应该设置一个状态字段,这样您就可以根据已查看的内容和未查看的内容进行查询。已被用户看到。 您可以将页面的网址放在照片所在位置或状态所在位置,这样当用户登录时,您每五分钟检查一次查询是否有未读通知,如果有任何显示在左下方的小吐司消息中屏幕的一面像facebook。
单击toast消息,您可以执行ajax调用以更新要通知的通知状态,以便它不会再次显示,并且在成功回调中,您可以将用户带到状态更新为的页面