Nik Faraday, В таблице делаете поле типе DATETIME, по умолчанию CURRENT TIMESTAMP. Таким образом, оно будет заполняться автоматически.
При выборке за день задаете WHERE DATE(имя_поля)=требуемая_дата. Вот и статистика за день.
Никаких костылей здесь нет.
Кстати, IP имеет смысл записывать, хоть оно и не идентифицирует юзера, но несет много информации.
Если кто-то нечаянно нажмет CTRL-R, статистике это абсолютно не повредит.
Если же кто-то будет усердно нажимать эту комбинацию в течение часа, он явно заслужил наше дополнительное внимание. Такого юзера легко выделить и убрать его заходы из таблицы.
Мне кажется, даже это слишком сложно. Никаких сумм никуда не закидывается, просто при каждом вызове страницы в конце добавляется вставка этого вызова в БД.
Записывать можно URL, параметры, инфо о браузере, время и т.п. Об ID записи вообще не надо думать, просто таблица с автогенерацией ID. Никакие ON DUPLICATE тогда не нужны.
Для статистики - COUNT, WHERE, ORDER BY и т.д. (я про MySQL, но, полагаю, и в POSTGRES есть такое)
И ради бога, никаких библиотек, это чрезвычайно просто в реализации.
Я бы сказала, что передача всего объекта лучше с точки зрения потенциальных изменений, когда остальные значения объекта могут тоже потребоваться. Тем более если, судя по ответам, затраты одинаковые.
Можно просто получать всю строку в качестве параметра и разбирать ее уже средствами PHP.
Например, у меня в htaccess вот что:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^.*(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
Получаю p в виде "/Var3/Value3/Var1/Value1/Var2/Value2" и дальше следую логике своего фреймворка.
Это не совсем то, что Вы ищете, но работает :)
Антон: Тогда надо сначала проверить, что вообще в $p находится, проверить каждую строчку кода, чтобы найти место, где результат отличается от ожидаемого.
Максим: Идея понятна, спасибо! Насчет "наложить штраф" - это, пожалуй, слишком :) Для этого в любом случае надо определить критерии, что является ошибкой, а что неучтенным обстоятельством.