Создайте другую таблицу в вашей базе данных.Когда пользователь открывает сообщение, обновите таблицу, чтобы показать, какое сообщение было открыто и каким пользователем.
Когда другой пользователь пытается открыть его, перепроверьте таблицу, чтобы увидеть, есть ли строка для этого сообщения.Затем вы можете выполнить соответствующее действие, например, открыть или предупредить пользователя.
Вы можете удалить строки по истечении заданного периода времени, чтобы другие могли их открыть.
Схема, например,
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 проблемы.
Что происходит, когда первый пользователь нажимает, выполняется быстрая проверка и обновление базы данных.При попытке второго пользователя скрипт обнаружит, что первый пользователь уже открыт, проверив базу данных.
Вы можете рассчитывать на это, если нагрузка на трафик низкая, а количество пользователей, пытающихся получить доступ, неслишком большой.А также в расчете на тот факт, что запросы на чтение и вставку выполняются за короткое время, что, как вы можете догадаться, быстрее, чем два пользователя щелкают одновременно.Если у вас нет другой проблемы, это должно работать