Как бы вы внедрили функцию "последнего просмотра" для пользователей?

При переполнении стека на странице профиля отображается свойство "последний раз видели". Похоже, что это не обновляется при каждом просмотре страницы (очевидно, по соображениям производительности). Как бы вы реализовали это в веб-приложении с большим трафиком? Вы бы обновили его только на определенных страницах? Или кэшировать последний раз, когда вы регистрировали последний визит пользователя, и ждать определенное количество времени, прежде чем обновлять базу данных? Или что-то совершенно другое?

4 ответа

На сайте с большим трафиком, таком как переполнение стека, я бы обновлял переменную "последний раз видел" только тогда, когда пользователь действительно что- то делает. Скрываясь и читая вопросы и ответы, не следует считать пользователя "увиденным" системой. Задавать вопросы и отвечать на них или голосовать по ним должны быть действия, которые обновляются, когда пользователь в последний раз виден.

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

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

if(!isset(!_SESSION['lastSeen'])){
 $_SESSION['lastSeen'] = time();
 updateLastSeenInDatabaseOrSomething();
}
else{
 if($_SESSION['lastSeen'] < time() + 2 * 60 * 60){ //2 hours
  $_SESSION['lastSeen'] = time();
  updateLastSeenInDatabaseOrSomething();   
 }
}

Что-то в этом роде, но потом с ОО и не делали одно и то же дважды.

Рассмотрите возможность использования шаблона проектирования "Command" для этого. Это поможет вам двумя способами - ответить на поставленный вопрос, а также реализовать функцию "отменить / повторить". Вы должны вести список объектов команд, разработанных в соответствии с этим шаблоном.

Другие вопросы по тегам