2013-12-23 3 views
0

У меня есть таблица записей, которая имеет столбец processed. На моей веб-странице я использую сеансы .. потому что каждый пользователь, который открывает страницу, должен видеть разные данные из таблицы .. поэтому у меня первоначально есть processed=0, и когда я выбираю свои данные, я обновляю столбец, где processed=0, а затем я обновляю столбец до processed=2, так что если другой открывает страницу, он получает другие данные ... но проблема в том, что если пользователь закрывает страницу, не меняя ничего о странице, мне нужно вернуть мой столбец на 0 processed=0 но я не могу обработать событие на кнопке закрытия страницы ... а также не на выходе из системы, потому что они могут закрыть страницу без выхода из системы ... так ли кто-нибудь знает, как я могу это сделать?Обновление столбца при закрытии окна в asp.net

обратите внимание, что я использую asp.net с vb.net

ответ

0

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

Простым способом достижения этого является выполнение некоторых вопросов опроса на обоих уровнях, то есть в db (поскольку ваш флаг хранится в db) и в коде. Опрос подразумевает, что постоянно запрашивает определенную работу через определенный промежуток времени. Очевидно, что опрос - это налогообложение, но это одно из решений.

Еще один способ сделать это, как только ваш пользователь войдет в систему, вы создаете долгожданный запрос Http, который ни одна из сторон (клиент и сервер) не прерывается, и как только он заканчивается, вы устанавливаете флаг на 0 опять же, но параллельный долговременный запрос вместе со всеми остальными не прост. Он называется Comet

Поэтому я бы рекомендовал постоянно делать запрос ajax каждые 2 минуты, чтобы обновить определенное поле, скажем LastActive в таблице учетных записей пользователей. Это будет составлять ваш код. Опрос

и затем создайте задание сервера sql, которое постоянно контролирует это поле LastActive и скажет, если разница между ним и текущим значением DateTime составляет более 2.10 минут, он устанавливает обработанное = 0 для этого пользователь.

Вы также можете посмотреть в поля SessionExpire (или что бы это ни называлось), если вы используете аутентификацию форм ASP.NET через сеанс

Смежные вопросы