Каков наилучший способ подсчета просмотров страниц для динамических страниц, таких как пример URL-адреса ниже? Я использую PHP и MySQL. Это поможет краткое объяснение. Благодаря!
http://www.example.com/posts/post.php?id=3
Обычно структура таблицы выглядит так:
таблицы:
id | name | ... ========================== 1 Some Page 2 Some Other Page
table_views:
page_id | views ================ 1 1234 2 80
где pages_views имеет уникальный индекс на page_id
Оператор MySQL для увеличения просмотров выглядит следующим образом:
INSERT INTO `pages_views` SET views=1 WHERE page_id=? ON DUPLICATE KEY UPDATE views=views+1 ;
Поскольку pages_views.page_id
уникален, строка для страницы будет создана, если она не существует; если он существует (это предложение «дубликат ключа»), счетчик будет увеличиваться.
Здесь я выбрал две отдельные таблицы, поскольку страницы CMS обычно не обновляются слишком часто (и, следовательно, их загрузка в основном читается), тогда как просмотры страниц читаются и обновляются, ну, с каждым просмотром страницы.
Ну, вы можете просто добавить pageviews
страницы в таблицу ваших страниц и сделать UPDATE pageviews = pageviews +1 WHERE id = 1
запрос на каждую загрузку страницы
Для просмотра статистики по дням / неделям / месяцам / годам я составил две таблицы. Первые архивы всех посещений сайта с моей страницей и идентификатором сохранены в одной строке. Во второй таблице записываются такие таблицы, как Piskvor.
Преимущество в том, что я могу просматривать статистику для любой страницы и идентификатора, который я хочу с течением времени (но это будет много строк с течением времени …), или я просто могу просмотреть общие просмотры страниц. Для посетителей моего сайта я обслуживаю информацию из этой второй таблицы, но моя панель администратора полностью использует первую таблицу.
statsEach - statID - page (example: page 100 is index.php, or 210 is news.php) - id (example: 1 is news story 1, 2 is news story 2,...) - date - time - user
а также
statsTotal - statTotalID - page - id - total
Я не знаю, что вам нужно / нужно делать, или даже если моя таблица лучше, но это работает для меня.
Это мой код, и он работает правильно, когда я открываю страницу. Когда я обновляю страницу, просмотры страниц увеличиваются на 1. Если page_id не существует, он будет вставлять запись с представлениями = 1, если page_id существует, она будет увеличиваться Виды
`INSERT INTO pages_views ( pages_id, views) VALUES ( $page_id, 1) ON DUPLICATE KEY UPDATE views=views+1`
С PDO у вас будет что-то вроде этого
$sql = "INSERT INTO pages_views ( pages_id, views) VALUES ( :pageId, 1) ON DUPLICATE KEY UPDATE views=views+1"; $q = $conn->prepare($sql); $q->execute(array(':pageId'=>$pageId));
Просто увеличьте целое число на странице, которую вы сейчас обслуживаете.
Простой пример можно найти по адресу http://www.configure-all.com/page_view_counter.php