背景
我对编程比较陌生,没有任何正规的训练和/或学校,我试着在我去的时候把东西捡起来。我目前正在尝试编写一个简单的facebook风格的新闻提要,用户被分成两个一般组,一个是被跟踪的(A)组,另一个是下面的(B)组。
我计划将提要设置为一个方向。‘s遵循A(并从A获得更新/通知),但A不跟随B以保持其为simple.Furthermore,每当A做某事,即状态更新时,我计划用A的活动更新B的提要。
我在这里读过一些书,也有一些是自己在谷歌上搜索的,但我遇到了两个问题,第一个问题是,我看到的大部分东西都在我头上(使用redis等工具),第二个问题是,我读过的大多数文章和答案都是关于该做什么的问题(消息排队、推拉),但并没有讨论如何去做的问题。
我计划有一张表(下面的信息)来存储信息,以说明如何跟踪谁:
---------------
| id | A | B |
---------------
| 1 | 3 | 5 |
----------------
| 2 | 3 | 11| WHERE A= id of people being followed AND B=id of people following.
----------------
| 3 | 7 | 2 |
----------------
| 4 | 3 | 1 |
---------------和其他追踪他活动的桌子
-----------------------------------------
| id | activities | last-update |
-----------------------------------------
| 1 | details | 2013-12-8 00:00:00 | WHERE last-update = ON UPDATE CURRENT
----------------------------------------- TIMESTAMP因此,每当上一次更新时间发生变化(即活动发生),我想将活动的详细信息发布到B(下面的一个)。
问题
我到底该如何在别人的“墙”上发布更新呢?我知道,我必须在数据库中查询用户之间的r/s (即谁在跟踪谁),但是如何将活动的细节推送到用户的墙上呢?我所读到的大部分内容似乎都建议设置一个定时器,用于查询服务器上的任何更新(从未确切地提到过我将如何进行此操作)。但就我有限的知识而言,这难道不是一种资源的浪费吗?(为什么在没有更新的情况下,如果您可以简单地在发生更新的情况下推出更新,那么为什么还要继续查询服务器呢?)
我知道基本的html、php和jquery,目前正在使用PHP5.3和Apache(统一服务器)运行。
如有任何建议/帮助和/或意见,将不胜感激。
发布于 2013-11-30 21:00:45
你想要达到的目标一开始看上去可能很简单,但是看看“大图”,如果你想简单地模拟这个问题,你就会发现很多事情都会影响到你的生意,但如果你想达到生产目的,并且你要瞄准上百万的用途,那么你就需要团队合作和团队合作。
提出的解决方案仅仅是为了仿真目的,
数据库设计
您的数据库应该很简单,有3个表1Users(跟随或跟随两者),表2Relations(谁跟踪谁)。表3Updates(谁在分享什么)。这是极简主义的设计。
动态无新闻源
这里讨论的提要被认为是动态的,而不是活的。首先,通过登录用户并为他/她激活会话来标识用户。使用css/css 3、HTML/HTML 5和jQuery/Javascript呈现布局,现在使用服务器脚本(PHP/JSP/ASP.Net等)查询数据库到1。从关系表中选择所有被记录的用户。接下来,为每个用户选择更新表中的所有更新,这些更新在(拥有更新B的用户)之间存在关系。现在,您已经有了更新,将动态内容显示给、主动记录的用户。
使其成为实时饲料
您问题的重要部分是如何将更新推送给用户。好吧,web不是中断驱动的,相反,每次客户端都要请求新的数据,这就是AJAX请求首先存在的原因。如果服务器在准备就绪时必须将更新推送到每个客户端,那么服务器如何知道客户机仍然在线,或者客户端有足够的带宽来接收数据,或者客户机不忙,以及许多其他问题。其想法是在某种程度上共享负载,同时使服务器能够管理事物,而且HTTP协议是无状态的,无法实现这样的功能。
解决方案是轮询,您可以使用JavaScript SetTimeOut()方法向服务器发送AJAX请求,并在有更新的情况下带回更新,然后相应地更新用户界面。
减少对服务器的AJAX调用次数的一种策略是为setTimeOut()方法使用不同的定时间隔。例如,您向Server发出了AJAX请求,服务器没有进行任何更新,然后1秒后又发出了另一个AJAX请求,而现在又没有更新,所以在2秒后发出下一个AJAX请求是有理由的,下一次是4秒……直到你得到一个更新,在这种情况下,你可能需要重置你的计时器或使用一半的当前间隔取决于你的需要和策略。
即使您在chrome浏览器或firefox中监视您的网络活动,您也会看到Facebook会主动发送AJAX请求,并将您的朋友/聊天消息/提要条目的在线/离线状态带回到网上/脱机状态。
https://stackoverflow.com/questions/20297592
复制相似问题