В социальной сети, что было бы самым простым способом проверить дружбу во всем мире?

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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам