Statistics

AKAPE

Новичок
Statistics

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

Еще волнует вопрос ID записи, хоть он и INT(10), хоть записи то мы удаляем постоянно - он ведь все равно инкрементиться и дойдет до максимально-допустимого значения...
 

lucas

Guest
Еще волнует вопрос ID записи, хоть он и INT(10), хоть записи то мы удаляем постоянно - он ведь все равно инкрементиться и дойдет до максимально-допустимого значения...
1. http://dev.mysql.com/doc/mysql/en/Numeric_types.html
Bigint еще никто не отменял.

2. В крайнем случае:
Код:
ALTER TABLE table AUTO_INCREMENT = 1;
 

AKAPE

Новичок
и вообще, стоит ли записывать каждый заход, может стоит делать еще 1 селект и проверять ,заходил ли он в этот час или нет , если заходил, то обновлять время апдэйтом, если нет то делать новую запись ... но это уже 2 запроса..

-~{}~ 08.05.04 15:02:

за бигинт спасибо.
 

fixxxer

К.О.
Партнер клуба
Ага, а щас я зайду на твой сайт, зажму спичкой кнопку Ф5 и пойду курить. Посмотрим, сколько продержится твой mysql. :)
 

AKAPE

Новичок
вот поэтому и спрашиваю :))) первый раз с таким сталкиваюсь
 

slach

Новичок
есть смысл... хранить в формате

IP юзера в виде INT
ДЕНЬ захода виде unix timestamp, но засовывать туда только день месяц год... т.е. чтото вроде strtotime(date('Y M d'));
и кол-во заходов за этот день

причем все три поля объединены в один PRIMARY KEY

добавлять в базу кажись можно можно одним запросом
PHP:
mysql_query('REPLACE stats VALUES('.ip2long($_SERVER['REMOTE_ADDR']).','.strtotime(date('Y M d')).',views+1)
график посещаемости строить так
SELECT IP, SUM(views) AS date_views, date FROM ... GROUP BY date


это все на глазок ... но общую идею я надеюсь ты ухватишь
 

AKAPE

Новичок
а разве REPLACE добавит новую запись если таковой нет?

-~{}~ 08.05.04 15:43:

за совет большое спасибо, какой год уже програмирую, а с базами данных связался только месяц назад - нонсонс прямо :)

-~{}~ 08.05.04 16:39:

You can't refer to values from the old row and use them in the new row. It appeared that you could do this in some old MySQL versions, but that was a bug that has been corrected.


тоесть, я не смогу взять из поля старое значение колличества заходов например и вреям проведеное на сайте, и подзапросы я тоже делать немогу, мускудь 3-ка :( Все равно прийдеться делать 2 запроса
 

slach

Новичок
ну делай как выше советовали...
сначала селект
потом если есть результаты то UPDATE
если нет
то INSERT DELAY INTO table VALUES ... (чтобы быстрее вставляло) ...

-~{}~ 09.05.04 13:25:

какая разница два запроса или один ...
просто та организация таблицы, которую я показал тебе
ОНА НАИБОЛЕЕ компактна..

что это ты такое программируешь "не один уже год", что до сих пор с базами данных не сталкивался ?? =)
 

AKAPE

Новичок
спасибо, так и сделал вообщето вчера, только без DELAY, сейчас открою доку посмотрю что это.

я не на PHP писал раньше :), а когда занялся им по-началу им (ради развлечения) - то хостинг дал мне мой знакомый, 2 мб на каком то 486-ом, мне [sensored] моих могучих работ хватало, продолжал писать используя файлы, в 1 день плюнул взглянув на конструкцию которая у меня вышла для работы с файлами, представил себе что все это можно уместить в 1 запрос .. и вот месяц как потихоньку их осваиваю.

-~{}~ 10.05.04 01:16:

ой, я видимо на 1 букву опечатался, что все исправили :)))
 

Фанат

oncle terrible
Команда форума
Еще волнует вопрос ID записи, хоть он и INT(10), хоть записи то мы удаляем постоянно - он ведь все равно инкрементиться и дойдет до максимально-допустимого значения...
займись арифметикой на досуге и посчитай, когда наступит этот момент
 
Сверху