В социальной сети, что было бы самым простым способом проверить дружбу во всем мире? - PullRequest
5 голосов
/ 08 октября 2011

Для справки, вот вопрос о SO, который я недавно задавал, который имеет отношение к этому вопросу: Как моделировать отношения дружбы

По этому вопросу мы нашли способ отображать новостные ленты только в том случае, если они опубликованы друзьями. Однако мне нужен совет о том, как более динамично проверять дружбу, чтобы ее можно было использовать в нескольких функциях сайта.

Например, я только что установил систему комментариев, позволяющую пользователям оставлять комментарии к новостным сообщениям. Тем не менее, это не ограничивается друзьями, и это должно быть (и позднее автор поста должен сделать это необязательным).

Публикация новостей только друзьями была немного другой, потому что я получал данные непосредственно из базы данных и использовал подзапросы SELECT, чтобы получать сообщения только от друзей текущего пользователя. Однако в примере с комментариями я хочу отображать форму комментария только в том случае, если этот человек является другом. На самом деле я ничего не извлекаю из базы данных, чтобы выбирать, сортировать и отображать.

Зная, что подобные проблемы будут возникать много раз по всему сайту, какой самый простой способ проверить дружбу? Могу ли я каким-то образом вытащить все идентификаторы пользователей всех друзей из базы данных в какой-либо массив сеансов, а затем выполнить if(in_array($friends)) всякий раз, когда мне нужно определить, является ли данное лицо другом в данный момент вошедший в систему пользователь? С моей головы это звучит так, как будто все будет работать нормально, но я бы сначала хотел, чтобы вы внесли свой вклад.

Вопрос, на который я ссылался выше, объясняет, как работает мой стол дружбы, в случае, если вы поможете мне с этим.

1 Ответ

0 голосов
/ 14 октября 2011

На самом деле, это очень плохая идея хранить массив друзей в сеансе.Что произойдет, если вы добавите нового друга после создания переменной сеанса?Он не обновляется в сеансе.

Поскольку вы будете много раз проверять список друзей на одной и той же странице, почему бы просто не запросить его и не сохранить в локальном массиве, который вы можете сохранитьиспользуется на той же странице.

Когда страница завершит работу, массив будет отброшен.

Таким образом, в основном вы будете запрашивать список только один раз.

РекомендуетсяРеализация будет заключаться в том, чтобы следовать совету "pst" в приведенном выше комментарии, и просто запрашивать каждый раз, когда вам нужно сначала найти взаимосвязь, поскольку это просто реализовать.Позже, когда скорость запроса начинает становиться проблемой, вы можете просто изменить внутреннюю часть этого метода, чтобы кэшировать список друзей в локальном массиве при его первом вызове, чтобы ускорить процесс.(обмен памяти на использование процессора).

...