синхронизировать различные пользовательские сессии, когда события произошли в PHP - PullRequest
0 голосов
/ 04 октября 2011

Я пишу приложение для социальных сетей и хочу синхронизировать различные пользовательские сессии.

Мой контекст следующий:

userA зарегистрирован и имеет массив своих контактов в сеансе.Пользователь B зарегистрирован и имеет массив своих контактов в сеансе.

пользователь A добавляет пользователя B в качестве контакта.Итак, таблица контактов (БД) видит новую запись, а у пользователя А есть обновление его массива контактов (легко, потому что событие происходит со стороны навигации пользователя А)

Мне нужно следующее:

IТеперь я хочу автоматически синхронизировать сеанс пользователя B, чтобы его массив контактов обновлялся без выполнения запроса sql для проверки таблицы контактов (дБ).Я хочу, чтобы во избежание слишком большого количества SQL-запросов это проверялось.

Есть ли у вас какие-либо предложения?

Я использую CodeIgniter (PHP), и сеанс управляется с помощью базы данных.

Большое спасибо

Ответы [ 2 ]

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

Вы хотите обновить копию данных (сеанс userAs), не обращаясь к основному набору данных.Это просто не сработает.

С архитектурой без общего доступа это будет трудно реализовать в PHP.

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

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

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

Это невозможно без выполнения SQL-запроса для проверки таблицы контактов. Даже если вы проводите сеансы в таблице sql, вам все равно придется запрашивать данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...