用php创建像twitter或convore的提及
你好我很好奇.关于他们如何做事.我认为他们做了这样的事情
@someone1 im stacking on stackoverflow RT @someone2 : hello guys what are you doing? 在我以我的方式做之前我想告诉你我的数据库方案 // CID = COMMENT ID,BID = BLOG ID,UID = USER ID CID BID UID COMMENT 1 1 1 @someone1 im stacking on stackoverflow RT @someone2 : .... 2 1 4 @someone1 im stacking on stackoverflow RT @someone2 : .... 3 1 12 @someone1 im stacking on stackoverflow RT @someone2 : .... >他们使用正则表达式来做这样的@someones名称 preg_match_all("/@[a-zA-Z0-9_]+/",$text,$matches); >然后他们从每个名字中取出@ foreach ($matches as $value) { foreach ($value as $value) { $usernames[] = substr($value,1); } } >然后他们从数据库中获取UID来做这样的事情 foreach ($username as $value) { # insert database one by one ? so it will be like the example above } 那么我们就可以输出评论购买UID. 然后somhow我们可以在博客中获得所有评论. (没有相同的评论)博客buid = 1,并通过uid =:uid为每个用户提供通知. 有没有更好的方法呢?像twitter或convore之类的东西? 谢谢你的关注 亚当拉马丹
我已经使用我们用于通信的内部应用程序做了类似的事情.
基本上,您将有两个表:status_updates和提及.每个状态更新都有很多提及.每当有人创建状态更新时,您将其保存到status_updates表.在此过程中,您还可以使用Regex检测任何@username“提及”.当您找到提及时,将其添加到提及表中.例如,您提到的表可能如下所示: mention_id (Auto-incrementing key) | status_message_id | username_id 这样,如果您想查看状态消息中是否有人被提及,您可以在status_messages表中快速查找,而不是每次都加载状态消息并运行Regex.这种方法的另一个好处是它允许您在每个状态消息中有多个提及.只需为每个提及创建一个记录. 这是我们设置的基本方式. 编辑:如果您想为给定用户提取“活动源??”,仅显示已提及它们的状态更新,它将如下所示: SELECT * FROM mentions m LEFT JOIN status_messages s ON m.status_message_id = s.id WHERE m.username_id = $username_id 我应该注意到,这不是他们在Twitter上的表现,因为他们正在处理规模问题,这会使这种简单的做事方式变得不可能.但是,如果您不担心扩展到数十万用户,我认为这是最简单的解决方案.如果你是,那么你手上可能会遇到更多问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |