5

作为参考,这是我最近提出的一个与此问题相关的关于 SO 的问题: How to model Friendship Relations

在这个问题上,我们想出了一种方法,仅在朋友发布时才显示新闻提要项目。但是,我需要的是有关如何以更动态的方式检查友谊的建议,以便可以在多个站点功能中使用它。

例如,我刚刚安装了一个评论系统,允许用户对新闻帖子发表评论。但是,这不仅限于朋友,而且应该是(以后应该由帖子的作者设为可选)。

仅由朋友发布新闻项目略有不同,因为我直接从数据库中获取数据,并使用SELECT子查询仅获取当前用户的朋友的帖子。但是,在评论的示例中,我只想在此人是朋友时显示评论发布表单。我实际上并没有从数据库中提取任何东西来挑选、排序和显示。

知道这样的问题会在整个网站中多次出现,检查友谊的最简单方法是什么? 我能否以某种方式将所有朋友的用户 ID 从数据库中提取到某种会话数组中,然后 if(in_array($friends)) 在我需要确定相关人员是否是当前登录用户的朋友时执行? 在我的脑海中,这听起来会很好,但我想先听听你的意见。

我上面链接的问题解释了我的友谊表是如何工作的,以防你帮助我解决这个问题。

4

1 回答 1

0

实际上,在会话中存储朋友数组是一个非常糟糕的主意。如果在创建会话变量后添加了一个新朋友会发生什么?它不会在会话中更新。

既然您将在同一页面上多次查看好友列表,为什么不直接将其查询出来并将其存储在一个本地数组中,以便您可以在同一页面上继续使用。

当页面执行完毕后,数组将被丢弃。

所以基本上,你只会查询列表一次。

推荐的实现方式是遵循上述注释中“pst”的建议,每次需要先查找关系时才查询,因为这很容易实现。后来,当查询的速度开始成为问题时,您可以更改该方法的内部以在第一次调用时将好友列表缓存在本地数组中以加快速度。(交换内存使用情况以换取处理器使用情况)。

于 2011-10-14T10:32:01.130 回答