оповещение кто уже читает эту страницу в php? - PullRequest
2 голосов
/ 08 марта 2011

У нас есть приложение для управления сообщениями от наших клиентов. У нас есть 4 руководителя службы поддержки клиентов, и мы хотим предотвратить ситуацию, когда одно и то же сообщение не может быть открыто двумя разными участниками, поэтому мы хотели бы сделать следующее ...

Предположим, что user1 открыл сообщение с идентификатором 15, и после этого user2 открыл то же сообщение, поэтому мы хотели бы дать предупреждение, что «Это сообщение уже открыто user1». Как мы это делаем?

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Создайте другую таблицу в вашей базе данных.Когда пользователь открывает сообщение, обновите таблицу, чтобы показать, какое сообщение было открыто и каким пользователем.

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

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

Схема, например,

User_id   msg_id  time_opened


К сожалению, вы не можете использовать сеансы, поскольку сеанс зависит от пользователя.Однако вы можете использовать плоские файлы.

Для удаления строк используйте метод, такой как


$timeout_time_in_seconds = 30;
$time = time() - $timeout_time_in_seconds; 
$Query= "delete from table where time_opened 

Обратите внимание, что в зависимости от поля времени, которое может быть int, datetime или timestring,может потребоваться дополнительное форматирование даты переменной $ time.Однако int будет наиболее удобен из-за легкости сравнения и вычитания и отсутствия форматирования.

Я мобильн, поэтому извините за любые ошибки.Также, поэтому я не комментировал, но должен был редактировать.Js проблемы.


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

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

1 голос
/ 08 марта 2011

Самый простой способ - реализовать пессимистическую блокировку на уровне БД. http://www.blackwasp.co.uk/PessimisticLocking.aspx. Какой бы язык вы ни использовали, вы должны будете проверить БД, чтобы увидеть, заблокирована ли строка, и отправить сообщение на экран.

Вы можете дополнительно настроить приложение на длительный опрос, чтобы уведомлять пользователей о доступности ресурса запроса.http://en.wikipedia.org/wiki/Push_technology

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