Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Список друзей на сайте
 
 автор: Sturmvogel   (30.03.2012 в 14:18)   письмо автору
 
 

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

На данный момент есть таблица в базе данных с полями:
1) from
2) to

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

1) уничтожать сессию по PHPSESSID, чтобы сигнализировать, что нужно обновить список друзей.
2) хранить значение количества друзей в профиле пользователя и при принятии заявки увеличивать значение. тогда придется проверять все время, меньше ли значение в сессии, чем в базе и если да, то обновлять список.
3) похожее, только хранить время добавления в таблице с друзьями и сравнивать его значение.

пока склоняюсь ко второму варианту. А вы что можете посоветовать?

  Ответить  
 
 автор: Valick   (30.03.2012 в 14:49)   письмо автору
 
   для: Sturmvogel   (30.03.2012 в 14:18)
 

обычно список друзей выводится с признаками состояния
например онлайн неонлайн и всякие статусы хренатусы
а при таком раскладе вам просто необходимо окунаться каждый раз в БД
так что стоит ли мудрить?)

  Ответить  
 
 автор: Sturmvogel   (30.03.2012 в 15:03)   письмо автору
 
   для: Valick   (30.03.2012 в 14:49)
 

ну, просто мне нужна периодическая работа со списком друзей, т.е. не просто на какой-то страничке его показать, что он есть, а, например, нужно сверять приватность записей (является другом или нет). или тоже не мудрить и для каждого случая просто лезть в базу и проверять?

  Ответить  
 
 автор: Valick   (30.03.2012 в 15:53)   письмо автору
 
   для: Sturmvogel   (30.03.2012 в 15:03)
 

а, например, нужно сверять приватность записей (является другом или нет)
о каких записях идет речь?

  Ответить  
 
 автор: Sturmvogel   (30.03.2012 в 16:02)   письмо автору
 
   для: Valick   (30.03.2012 в 15:53)
 

Ну, грубо говоря, стена пользователя (facebook, twitter), где он публикует записи свои. А у каждой записи есть настройки приватности (например, могут просматривать все, только друзья, и т.д.). Такая же тема и для возможности комментирования записей.

  Ответить  
 
 автор: Valick   (30.03.2012 в 16:06)   письмо автору
 
   для: Sturmvogel   (30.03.2012 в 16:02)
 

а чего тут сверять, просто обычная выборка с условием

  Ответить  
 
 автор: Sturmvogel   (30.03.2012 в 16:24)   письмо автору
 
   для: Valick   (30.03.2012 в 16:06)
 

ну, прям простой, думаю, не выйдет.

  Ответить  
 
 автор: Valick   (30.03.2012 в 16:30)   письмо автору
 
   для: Sturmvogel   (30.03.2012 в 16:24)
 

если грамотно организуете БД, то выйдет
вот тут в "соседней" теме некоторые размышления http://softtime.ru/forum/read.php?id_forum=3&id_theme=85969

  Ответить  
 
 автор: Sturmvogel   (30.03.2012 в 18:18)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: deimand   (30.03.2012 в 17:04)   письмо автору
 
   для: Sturmvogel   (30.03.2012 в 16:24)
 

и вот тут http://softtime.ru/forum/read.php?id_forum=3&id_theme=84489

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования