[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше реализовать счетчик посещаемости?
adm119
Вводная: сайт, что-то вроде каталога фирм. На этом сайте для каждой фирмы своя страница с адресом site.ru/15 где число - ID фирмы в таблице БД. Информация выводится из таблицы так: "SELECT * FROM `firms` WHERE `id` = ".$_GET['id']

Задача: сделать скрипт, который бы сохранял посещаемость страницы пользователями. Чтобы представители этих фирм могли через личный кабинет на сайте видеть сколько раз посещали страницу с данными об их фирме сегодня, вчера, за неделю или в любой выбранный период.

Полагаю, что для этого нужна отдельная таблица.

Вопрос: как это сделать лучше? Я не прошу написать конкретный скрипт - сам буду пробовать, я прошу совет опытных людей с напутствием как это сделать лучше, как построить таблицу, принцип сохранения статистики и т.д.

Просто слышал от опытного чела, что если просто на странице разместить что-то вроде $counter++; который будет плюсовать каждый заход в ячейку строки с фирмой, то это может привести к перегрузкам базы если на страницу зайдёт сразу много.



Спустя 11 минут, 8 секунд (6.04.2012 - 14:39) Jack_White написал(а):
создай отдельную таблицу в бд, где id, id_sitepage, date, count_page размести например на базовой странице чтоб определяла какой id сайта и заносила в бд при каждом открытии страницы сайта пусть плюсует count_page

Спустя 10 минут, 14 секунд (6.04.2012 - 14:49) adm119 написал(а):
То есть типа того?

Допустим фирма с ID = 15, которая по адресу site.ru/15

TABLE `count`
WHERE
`id`= 1 - просто id и всё (зачем он вообще?)
`id_sitepage` = 15 - сюда скрипт вносит идентификатор фирмы
`date` = 1333712684 - я обычно для дат использую time()
`count_page` = 0 - если не посещали ни разу

А запрос?

UPDATE `count` SET `count_page` = $count++

Опять же, просто плюсование получается? Не?

Спустя 14 минут, 13 секунд (6.04.2012 - 15:03) NitroGenerate написал(а):
А переменную $count где будешь брать ? =)
Запрос на добавление еще одного просмотра, к количеству всех просмотров этой страницы можно составить так:
$id_sitepage - номер страницы, который ты должен подготовить перез выполнением запроса.

UPDATE `count` SET `count_page` = `count_page` + 1 WHERE `id_sitepage` = '".$id_sitepage."'


Спустя 1 минута, 53 секунды (6.04.2012 - 15:05) Jack_White написал(а):
я тебе в общем описал принцип
Цитата (adm119 @ 6.04.2012 - 11:49)
`id`= 1 - просто id и всё (зачем он вообще?)

я так использую, но в принципе у тебя есть id сайтов они не повторяются можно это реализовать в таблице сайтов, даж правильней тогда там id и будет id_sitepage одно и тоже
запрос типа
"UPDATE `count` SET `count_page` = `count_page` + 1
WHERE `id_sitepage` = "
. (int) $_GET['id'];

Спустя 4 минуты, 35 секунд (6.04.2012 - 15:10) NitroGenerate написал(а):
Ну да, id, на который обычно назначают автоинкремент, нужен для оперирования страницами, если мы их будем вызывать.
Допустим страницы новостей, страницы пользователей, или сообщений...
А в логах, счетчиках, лично я никогда не использую инкременированные id, так как лишний вес таблицы.

Спустя 5 часов, 17 минут, 56 секунд (6.04.2012 - 20:28) adm119 написал(а):
Ребят, я понял о чём вы, но ведь это что получается? Обычная цифра, которая увеличивается на 1 когда юзер открывает страницу (срабатывает скрипт). Получается, что для каждой страницы в новой таблице БД будет просто отдельная строка где будет считаться общее кол-во срабатывания скрипта? А как же тогда выборку делать, чтобы, например, просмотреть сколько просмотров было дней пусть так 47 назад?

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

Спустя 1 час, 42 минуты, 22 секунды (6.04.2012 - 22:10) sergeiss написал(а):
Вот тут конкурс был объявлен. Правда, так до конца и не завершили его http://phpforum.ru/index.php?showtopic=53245&hl=

Спустя 1 час, 57 минут, 1 секунда (7.04.2012 - 00:07) Jack_White написал(а):
adm119
тогда создай отдельную таблицу в бд, где id, id_sitepage, date, count_page
размести например на базовой странице чтоб определяла какой id сайта и заносила в бд при каждом открытии страницы сайта пусть создается новая запись в таблице
"INSERT INTO `count`(`id_sitepage`, `date`, `count_page`) 
VALUES("
. (int) $_GET['id'] .", ". time() .", ". 1 .")";

И тут уже делай выборку и по дате и по количеству
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.