ONK
Пассивист PHPСluba
Патриот,
для простого счётчика, с самыми приметивными возможностями тебе подойдёт всего одна таблица примерно такой структуры:
day | user_ip
в первом строковом столбце например (varchar(8))храни результат функции date('y_m_d')
во втором столбце (INT) результат функции ip2long($user_ip)
в этой таблице надо сделать двухстолбцовый индекс (day , user_ip) именно в таком порядке, который позволит в реальном времени делать быстрые запросы на выборку как количества хитов за текущий день так и количества уникальных ip адресов. Помимо этого таблица не будет страдать от большого количества записей за предидущие дни.
В результате твоя функция добавления новых хитов ограничится одним запросом типа
"INSERT INTO tab_name (day , user_ip)VALUES('".date('y_m_d')."','".ip2long($user_ip)."')"
А выборка результатов в реальном времени может производить двумя простыми запросами
"SELECT COUT(*) AS hits FROM tab_name WHERE day = '".date('y_m_d')."'"
и
"SELECT COUT(*) AS hosts FROM tab_name WHERE day = '".date('y_m_d')."' GROUP BY user_ip"
вот и весть твой счётчик.
Для написания чего-то более серьёзного нужно вести таблицу регистрации в реальном времени всех возможных данных + иметь скрипт который периодически обрабатывает эту таблицу расовывая из неё данные в специализированные таблицы оптимизированные для генерирования соответствующих отчётов.
для простого счётчика, с самыми приметивными возможностями тебе подойдёт всего одна таблица примерно такой структуры:
day | user_ip
в первом строковом столбце например (varchar(8))храни результат функции date('y_m_d')
во втором столбце (INT) результат функции ip2long($user_ip)
в этой таблице надо сделать двухстолбцовый индекс (day , user_ip) именно в таком порядке, который позволит в реальном времени делать быстрые запросы на выборку как количества хитов за текущий день так и количества уникальных ip адресов. Помимо этого таблица не будет страдать от большого количества записей за предидущие дни.
В результате твоя функция добавления новых хитов ограничится одним запросом типа
"INSERT INTO tab_name (day , user_ip)VALUES('".date('y_m_d')."','".ip2long($user_ip)."')"
А выборка результатов в реальном времени может производить двумя простыми запросами
"SELECT COUT(*) AS hits FROM tab_name WHERE day = '".date('y_m_d')."'"
и
"SELECT COUT(*) AS hosts FROM tab_name WHERE day = '".date('y_m_d')."' GROUP BY user_ip"
вот и весть твой счётчик.
Для написания чего-то более серьёзного нужно вести таблицу регистрации в реальном времени всех возможных данных + иметь скрипт который периодически обрабатывает эту таблицу расовывая из неё данные в специализированные таблицы оптимизированные для генерирования соответствующих отчётов.