PHP и MySQL лучший способ подсчета просмотров страниц для динамических страниц

Каков наилучший способ подсчета просмотров страниц для динамических страниц, таких как пример URL-адреса ниже? Я использую PHP и MySQL. Это поможет краткое объяснение. Благодаря!

http://www.example.com/posts/post.php?id=3

Related of "PHP и MySQL лучший способ подсчета просмотров страниц для динамических страниц"

Обычно структура таблицы выглядит так:

таблицы:

 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