Создаю движок на php + mysql. Требуется сохранять для каждого пользователя время последнего посещения сайта. Я знаю как это реализовать, хотел спросить немного о другом. Чтобы сохранить время последнего посещения требуется выполнить запрос к БД, а это - лишний расход ресурсов. В случае с несколькими пользователями еще куда ни шло, но если их сотни или тысячи? И для каждого нужно выполнять запрос.
Возможно, кто-нибудь из здешних программистов знает, какую оптимизацию применить в данном случае?
Буду благодарен за помощь.
Рейтинг
133
Рейтинг
114
Раздел: Программирование, проголосовало: 222, последний комментарий: 19.10.2011 15:56 Вопрос закрыт автором
Если вы храните данные в базе, как вы представляете себе возможность обновления информации в базе без запроса к базе?
На нашем проекте, в частности, насколько мне известно, каждая активность находит отражение в запросе к базе.
Оптимизацию можно предложить следующую: отслеживать сессию пользователя, при ее смерти записывать последнее значение активности, хранящееся доселе в сессии. Вы сэкономите на запросе к базе. Но проиграете в создании механизма слежения за сессией. Эксперимент покажет, что лучше.
Современные сервера баз данных довольно хорошо оптимизированы, так что сложную работу лучше доверить СУБД — можно получить очень весомый выигрыш в производительности. Кроме того действие посетителя обычно отрабатывается сервером за долю секунды, после чего сервер просто забывает об этом посетителе и ждёт следующего. Механизм сессий позволяет сохранять текущие персональные сведения, но сбрасывать всё необходимое в базу данных лучше сразу же: потом сервер просто не вспомнит про посетителя.
А если посетителей на сайте одновременно несколько сотен? И запросы-то не только обновления последнего времени посещения, но и более сложные. Что в таком случае?