[Tips] Cocoonアクセス集計機能の動作確認を行う方法

本サイトではWordPressテーマのCocoonを使っています。
多機能、かつネット上での情報量も多いため助かります。本当にありがとうございます。

Cocoonにはアクセス集計機能があり、ウィジェットにアクセスランキングが表示できます。当方でも数ヶ月前より他の方式から切り替えて利用しているのですが、Google Analyticsとは異なる集計結果になることもあり「ちゃんと動いているかな」と気になりました。

アルゴリズム違うため、ある程度集計結果がズレることは承知の上ですが、動作を確認してみました。

解説

Webアクセスログを確認すると、/wp-content/themes/cocoon-master/lib/analytics/access.php 宛のWebアクセスが確認できるかと思います。

つまりCocoonでは単純にアクセスがあるごとにaccess.php宛のリクエストがあり、単純に加算していることになります。なお、同一IPから同一ページへの連続アクセスについては加算しないようになっているとのことです。

データベース上に wp_cocoon_accesses テーブルを作成し、ここでアクセスデータを管理しています。
ウィジェットには、過去30日程度のアクセス集計の結果を表示しているようです。

拠ってデータベースの状況を調べることで動作状況を確認することが可能です。

確認方法

データの確認方法を解説します。
まず、wp-config.php に記載のある設定に従いMySQLコンソールに接続します。

$ mysql -u (DBユーザ名) -h (DBホスト名) (DB名) -p

アクセスデータ加算の確認

アクセス数の累計が加算されることにより確認できます。
以下のコマンドを実行します。

過去のアクセス合計数
MySQL [DBName]> select sum(count) from wp_cocoon_accesses;
+------------+
| sum(count) |
+------------+
|      21639 |
+------------+

適当にページにアクセスした後に再びコマンドを実行することで、加算を確認できます。
これにより、アクセス解析が正しく動作していることを確認できます。

集計結果の確認

集計結果も、以下のようなコマンドを実行することで確認できます。

過去30日のアクセス解析結果
MySQL [DBName]> select access.post_id,post.post_name,sum(count)
    -> from wp_cocoon_accesses access
    -> inner join wp_posts post on access.post_id = post.id
    -> where date > DATE_SUB(now(),INTERVAL 30 DAY)
    -> group by access.post_id
    -> order by sum(count) desc;
+---------+--------------------------+------------+
| post_id | post_name                | sum(count) |
+---------+--------------------------+------------+
|    XXXX | digi-q                   |        172 |
|    XXXX | gdomain-mailrecv         |        165 |
|    XXXX | ipv6                     |        164 |
|    XXXX | gdomain-mailsend         |        144 |
|    XXXX | cloudfront-cache         |        124 |
  ~~省略~~
+---------+--------------------------+------------+

当方では、ウィジェットに表示されているランキングの順序と同一であることを確認しました。
正常に動作しているようで安心しました。

過去全てのPVランキング

なお、統計取得開始以降のPVランキングを確認することもできます。

MySQL [DBName]> select access.post_id,post.post_name,sum(count)
    -> from wp_cocoon_accesses access
    -> inner join wp_posts post
    -> on access.post_id = post.id
    -> group by access.post_id
    -> order by sum(count) desc;
+---------+--------------------------+------------+
| post_id | post_name                | sum(count) |
+---------+--------------------------+------------+
|    XXXX | gdomain-mailrecv         |       2375 |
|    XXXX | ipv6                     |       1933 |
|    XXXX | gdomain-mailsend         |       1762 |
|    XXXX | digi-q                   |       1400 |
|    XXXX | synology-backup-zabbix   |       1117 |
  ~~省略~~
+---------+--------------------------+------------+

直接データを確認することで、よりきめ細やかなデータが取得でき、良いですね。
皆様のご参考になれば幸いです。

コメント