|
|
|
| Хотелось бы услышать мнения, какой вариант хранения-работы со списком друзей в небольшой соц-сети был бы наиболее эффективным.
На данный момент есть таблица в базе данных с полями:
1) from
2) to
Хочется каким-то образом попробовать разгрузить базу данных при работе с этим списком. Например, один раз загружать при входе пользователя список в сессию, а потом работать с ним. Тогда возникает проблема, как обновлять этот список, если, например, другой пользователь принял заявку на добавление...
1) уничтожать сессию по PHPSESSID, чтобы сигнализировать, что нужно обновить список друзей.
2) хранить значение количества друзей в профиле пользователя и при принятии заявки увеличивать значение. тогда придется проверять все время, меньше ли значение в сессии, чем в базе и если да, то обновлять список.
3) похожее, только хранить время добавления в таблице с друзьями и сравнивать его значение.
пока склоняюсь ко второму варианту. А вы что можете посоветовать? | |
|
|
|
|
|
|
|
для: Sturmvogel
(30.03.2012 в 14:18)
| | обычно список друзей выводится с признаками состояния
например онлайн неонлайн и всякие статусы хренатусы
а при таком раскладе вам просто необходимо окунаться каждый раз в БД
так что стоит ли мудрить?) | |
|
|
|
|
|
|
|
для: Valick
(30.03.2012 в 14:49)
| | ну, просто мне нужна периодическая работа со списком друзей, т.е. не просто на какой-то страничке его показать, что он есть, а, например, нужно сверять приватность записей (является другом или нет). или тоже не мудрить и для каждого случая просто лезть в базу и проверять? | |
|
|
|
|
|
|
|
для: Sturmvogel
(30.03.2012 в 15:03)
| | а, например, нужно сверять приватность записей (является другом или нет)
о каких записях идет речь? | |
|
|
|
|
|
|
|
для: Valick
(30.03.2012 в 15:53)
| | Ну, грубо говоря, стена пользователя (facebook, twitter), где он публикует записи свои. А у каждой записи есть настройки приватности (например, могут просматривать все, только друзья, и т.д.). Такая же тема и для возможности комментирования записей. | |
|
|
|
|
|
|
|
для: Sturmvogel
(30.03.2012 в 16:02)
| | а чего тут сверять, просто обычная выборка с условием | |
|
|
|
|
|
|
|
для: Valick
(30.03.2012 в 16:06)
| | ну, прям простой, думаю, не выйдет. | |
|
|
|
|
|
|
|
для: Sturmvogel
(30.03.2012 в 16:24)
| | если грамотно организуете БД, то выйдет
вот тут в "соседней" теме некоторые размышления http://softtime.ru/forum/read.php?id_forum=3&id_theme=85969 | |
|
|
|
|
|
|
|
для: Valick
(30.03.2012 в 16:30)
| | Т.е. что-то в духе
1. ввести столбец approved, который отвечал бы за взаимность добавления в друзья
2. запрос записей из таблицы "r"
SELECT r.* FROM r
INNER JOIN f ON r.author = f.to
WHERE r.privacy = 'all' OR
(r.pivacy = 'friends' AND f.from = $ME_USER AND f.approved = 'yes')
AND r.author = $CURRENT_USER;
|
| |
|
|
|
|