Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2011-12-03 01:52:53

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

外部アクセス解析に頼るほど大量のアクセスがあるわけではないけど簡単なアクセス解析をしたい。
Nucleusで完結したいという人向けのアクセス解析プラグイン。
ついでにアクセスカウンタと人気の記事リスト出力機能搭載。

詳細、利用法などは下記wikiを参照
http://japan.nucleuscms.org/wiki/plugins:accessanalyze
PHPは5以上必須。
略記三項演算子(?:)は避けたので5.3でなくても動くはず。

個人的にはこれ以上の機能は必要無いと思っている状態です。
改善、追加機能など要望があれば検討したいと思います。

バージョンアップ方法
テーブル構造は1.0から変えていません。

  • プラグインオプション設定から”アンインストール時にデータを削除しますか?”を”いいえ”に更新

  • 各ブログ設定のテンプレート、カウンタ初期値を退避

  • プラグインのアンインストール

  • プラグインフォルダ内のNP_AccessAnalyze.phpファイルとaccessanalyzeフォルダを削除(1.22からの更新ならば上書きで可)

  • プラグインファイルを追加して適宜アクセス権を設定

  • Nucleusプラグイン管理画面よりインストール

  • 各ブログ設定のテンプレート、カウンタ初期値を設定

で行なってください。

v1.1 -> v1.2系 バージョンアップ時の注意

  • アクセスカウンタ、人気記事リスト、カウンタの初期値をブログ設定画面に移動しました。
    管理画面 > ブログ設定 から設定を行なってください。

  • アクセスカウンタのスキン変数名が変わりました。(ユーザー数表示の”_uu”を”_uv”に)

v1.3 -> v1.4 バージョンアップ時の注意
管理画面作成クラスに埋め込まれていた管理画面のテーブルタグスタイルが外部CSSファイルへ移動しています。
また、あわせてスタイルのclass名が変更されています。
旧のCSS定義でそのまま上書きしないよう注意してください。

改訂履歴
v1.0 とりあえずできちゃったからリリース
v1.01 アイテム選択ができない不具合を修正
v1.1 ログの一部が削除できない不具合を修正
     アクセスカウンタ出力機能を追加
     人気の記事リスト出力機能を追加

v1.2 カウンタと記事リストのテンプレートをブログ設定へ移動
     ログの削除機能を追加(年単位)
     ログが無い月にリンクが張られないように修正
v1.21 当初から薄々気づいていたアイテムのタイトルに"@"を含むと
       アイテム詳細へのリンクが正しく作成されなくなる不具合の修正
     ログ出力対象で「日」を指定すると指定した日以降のログがあってもリンクにならない不具合の修正
v1.22 FancyURL利用時に管理画面のリンクが正しく生成されない不具合の修正

v1.3 Cookieをブログのルートパスに設定するように修正
     PHPのWarningログなどが出ないように修正
v1.4 MySQL4.xのデフォルト設定で動作するように修正
     期間集計表示の不具合を修正
     管理画面のテーブルタグのスタイルを外出しにした
v1.42 検索文字列を文字コード環境にかかわらずUTF-8で保存していた不具合の修正
     HTTP_REFERERが空の場合に発生していたサーバーエラーに対処

一応旧版も置いときます。


Attachments:
zip NP_AccessAnalyze_142.zip, Size: 18.61 KiB, Downloads: 682
zip NP_AccessAnalyze_130.zip, Size: 18.25 KiB, Downloads: 504
zip NP_AccessAnalyze_140.zip, Size: 18.58 KiB, Downloads: 352

オフライン

#2 2012-01-05 14:21:27

daishoya
メンバー
From: 東京都府中市
登録日: 2008-12-30
投稿: 4
ウェブサイト

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

はじめまして。きのうから使い始めた daishoya と申します。

初歩的なことをお聞きしたいのですが、アクセス解析の管理画面のログを見るために、サイトアクセスや時間帯などのメニューボタンをクリックすると、サイトのトップページへ飛んでしまいます。

カウンター表示や人気アイテムリスト表示はまだ試していないのですが、ログを見るために、スキンやテンプレートのどこかをいじるのでしょうか?

見当はずれなことを言っていたら申し訳ございません。
ちなみに、PHP5.3/Nucleus CMS v3.64/MySQL5 の環境で動作確認しております。


代書屋

オフライン

#3 2012-01-05 19:23:11

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

daishoya 様の御報告と関係があるかは分かりませんが、
解析ページへのリンク URI 生成に createBlogLink を使っているため
FancyURL 利用環境ではうまく解析ページへ飛べないようです。
うちでは accessanalyze/class.php の   128行目

function showBlogCriteria($param) {

のすぐ下に

global $CONF;
$CONF['URLMode'] = 'normal';

を追記して対処しています。

オフライン

#4 2012-01-05 19:40:53

daishoya
メンバー
From: 東京都府中市
登録日: 2008-12-30
投稿: 4
ウェブサイト

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

sakurae様
daishoyaと申します。教えていただいた方法で管理画面からログを閲覧できるようになりました。
ありがとうございました。


代書屋

オフライン

#5 2012-01-06 01:04:28

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

daishoyaさん、ご連絡ありがとうございます。
そして、sakuraeさん、対応方法を教えて頂きありがとうございました。

FancyURLについてはcreateBlogLinkを使えばNucleus側でうまく対処してくれるものと思ってあまりきちんと見ていませんでした。 tongue

見たところ、Nucleusのリンク生成関数は管理画面で使われることを想定していないようなので、自前でURIを生成するように修正したいと思います。

オフライン

#6 2012-01-15 00:26:52

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Reineさんには以下の件で大変お世話になりましたので、せめてもの恩返しと思いコードを見てみました。
[Nucleus CMS 4.0の開発 - 2] 言語ファイル命名の新ルールとロケール情報の実装
[Nucleus CMS 4.0の開発 - 3] エンティティの変換に関して

index.phpの19行/36行で使われているブロック({}で囲まれている部分)に、膝を叩いてしまいました。こうすることでグローバルスコープから分離できるので、グローバル変数を上書きすることなく同名のローカル変数が使えます。スマートですね!

以下、ざっとコードを追いかけてみての提案です。

1. supportsFeature()の返り値
プラグイン内でPHP5のbuiltin関数である「mysql_*」は使わずに、Nucleus CMSのラッパー関数「sql_*」を使っていますので、supportsFeature()でsqlApiが1を返すようにするとよいです。
http://japan.nucleuscms.org/documentati ... tml#tables

2. ereg関数をpreg関数に
ereg_replaceのようなereg関数はPHP5.3ではdeprecatedですので、preg関数への書き換えをお勧めします。
http://php.net/manual/ja/function.ereg-replace.php

余裕があったらもっと深入りしたいところなのですが、あいにく。。。

オフライン

#7 2012-01-15 12:53:47

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Mocchiさん、ありがとうございます。

PHPは気をつけることが多くて把握しきれていない上に、プラグインともなるとコードレビューしてもらえることがそうそう無いので、記述に問題が無いか、脆弱性を含んでいないかとか色々気になっているところです。

Mocchi さんの発言:

supportsFeature()でsqlApiが1を返すようにするとよいです。

supportsFeature()については完全に見落としです。
プラグインAPIについては必要なところだけを拾い読みしていました。 :oops:

Mocchi さんの発言:

ereg関数をpreg関数に

あれ?ereg使った覚えがない・・・と思ったら他のプラグインから拝借した多言語対応関数に!

ご指摘の2点については手持ちのコードにgetMinNucleusVersion()とあわせて対応しました。
次回の機能変更や不具合修正に合わせてリリースしたいと思います。

深入りは大変かと思います。
やってること自体はそんなに複雑ではないと思うのですが、コード行数を減らしたくてだいぶ濃縮したコードにしてしまいました。
このプラグインの場合、PHPよりもSQLが間違ってないかが気がかりです。 lol

オフライン

#8 2012-05-20 16:16:31

snowfort
メンバー
登録日: 2012-03-27
投稿: 3

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

初めておじゃまします、最近Nucleusを使い始めた者で、NP_AccessAnalyzeは数日前に導入しました。管理画面から「プラグイン」「アクセス解析」と進むと解析結果ページが開くのですが、「サイトアクセス」「時間帯」以外の項目が空白になってしまいます。
たとえば「アイテム別アクセスランキング」の欄ですとmySQL error with query SELECT itemid, SUM(pageview) AS pageview FROM nucleus_NP_AccessAnalyze_ItemCount WHERE blogid=1 AND period LIKE '201205%' GROUP BY itemid ORDER BY SUM(pageview) DESC, itemid DESC LIMIT 3: Invalid use of group functionと表示されます。他の「Referer 別〜」「Searchword 別〜」も同様に「mySQL error with〜」で始まる表示があるので、原因は同じような印象なのですが、アクセス解析は管理画面のプラグインから見るのでなく、別ページを作って表示させるべきなのでしょうか?PHPだのデータベースだのを初めてさわるような人間がNucleusを使ってるのが間違いかも知れませんが…
当方の環境についてサーバーはFC2、mySQLは4.1.20、PHPは5.2.8と表示されています。

オフライン

#9 2012-05-20 21:51:14

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

snowfortさん

すみません。
私の所にMySQL4.xの環境がなかったので動作確認できていません。

検索したところ、MySQL4.xで発生するようですが、いまいち何を原因として発生しているのかよくわかりません。
”Invalid use of group function MySQL4”で検索

可能であればMySQL5を使って頂けると助かります。

下記のFC2ヘルプページによるとユーザーサポートに問い合わせる事でバージョンを確認できるそうなので一度問い合わせてみてはいかがでしょうか。
http://help.fc2.com/rentalserver/qa/group117/

オフライン

#10 2012-05-21 01:32:57

snowfort
メンバー
登録日: 2012-03-27
投稿: 3

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Reineさん
すばらしくお早いご対応で感動しております!ありがとうございます
MySQLのバージョンが引っかかっているという事なのですね。
FC2へは問い合わせてみますが、バージョン変更なんて、できるんかしら…?
ダメなら、外部分析を使うしかなさそうですね…
せっかく具合よさそうなものに出会えたのに(T_T)
ともあれ、深く感謝しております。今後ともよろしくお願いいたします。拝

オフライン

#11 2012-05-21 14:57:21

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

ちょっと調べてみました。

Invalid use of group function - MySQLリファレンスによると「GROUP BY (集約) 関数」と呼ぶようですが - をORDER BY句に含めているのが要因かと思います。この表現はSQL-99に基づかないため、MySQLサーバーの設定によっては使えない場合があるようです。

6.3.7.3. 非表示のフィールドに対する GROUP BY @ MySQL 4.1 リファレンス

MySQL 4.1 リファレンス さんの発言:

注意: MySQL バージョン 3.22(またはこれより前のバージョン)を使用している場合や、SQL-99 に従う必要がある場合、GROUP BY 節と ORDER BY 節では式は使用できません。この制約は式のエイリアスを使用することによって回避できます。


7.12.3. 非常時カラムとの GROUP BY および HAVING @ MySQL 5.1 リファレンスマニュアル

MySQL 5.1 リファレンスマニュアル さんの発言:

標準 SQL に準じる場合は、GROUP BY 節で式を使用することはできないのでご注意ください。式にエイリアスを使用することで、この制限を回避することが可能です :

リファレンスによると、エイリアスを用いることで同様のことが実現できるらしいので、例えばこのようにすると解決するかもしれません。

SELECT ic.itemid AS itemid, SUM(ic.pageview) AS pageview
FROM nucleus_NP_AccessAnalyze_ItemCount AS ic
WHERE ic.blogid=1 AND ic.period LIKE '201205%'
GROUP BY ic.itemid
ORDER BY pageview DESC, itemid DESC LIMIT 3

オフライン

#12 2012-05-21 21:37:34

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Mocchiさんありがとうございます。

リファレンスを見ましたが見難すぎ…

つまり、SUM()関数などをGROUP BYやORDER BYで使うなってことですね。
とりあえずそのような対処を施してみました。

一応MySQL4.x対応ということになるのでしょうか。

snowfortさん、よければこれで試してみてください。


Attachments:
zip NP_AccessAnalyze_130a.zip, Size: 18.23 KiB, Downloads: 380

オフライン

#13 2012-05-27 10:24:46

snowfort
メンバー
登録日: 2012-03-27
投稿: 3

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Reineさん
ご対応ありがとうございます!
先日の投稿後FC2より「verUPの予定なし」と回答あり
だめだこりゃと諦めていて、こちらのフォーラム見てなかったのですが、
思い出して再訪してびっくりしているところです。
早速1.3aに置き換えたところ、全部の項目が表示されました!
すばらしい! 深謝! 鼻血が出そうでした!

オフライン

#14 2012-05-27 14:47:27

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

何とか解決したようでよかったです。

reine さんの発言:

一応MySQL4.x対応ということになるのでしょうか。

MySQLサーバーのバージョンによるものではなく、MySQLサーバーの設定によるものだと理解しています。

オフライン

#15 2012-07-26 14:42:03

okjaiki
メンバー
登録日: 2012-07-26
投稿: 4

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

はじめまして。使用させて頂いて1ヶ月ほど経っています。
大変助かっております、ありがとうございます。

1ヶ月経過したのでログをまとめてみたのですが
「エージェント」の欄で「OS」「ブラウザ」「ブラウザエンジン」共に
空白のレコードがランキングトップになっていました。
これは何を意味するのでしょう?ロボットの類と考えていいのでしょうか?

環境は
PHPバージョン:5.3.13
MySQLバージョン:5.0.27
NucleusCMSバージョン:3.64 です。

オフライン

#16 2012-07-27 00:47:55

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

okjaikiさんはじめまして。
ご利用ありがとうございます。

「エージェント」の欄で「OS」「ブラウザ」「ブラウザエンジン」共に
空白のレコードがランキングトップになっていました。
これは何を意味するのでしょう?ロボットの類と考えていいのでしょうか?

エージェントが空白になる原因としては2つ考えられます。

  • ブラウザ(もしくはロボット)から送られてくるユーザーエージェント文字列が空白

  • 想定されている「OS」「ブラウザ」「ブラウザエンジン」リストの値がユーザーエージェント文字列に含まれていない

どちらにしろまっとうなブラウザではないか、ロボットの類だと思いますが、NP_AccessAnalyzeでは保持データ量削減のため元のユーザーエージェント文字列を保存していないので原因の特定はApacheのアクセスログなどを確認する必要があります。

それと、一つゴメンナサイなのですが、「OS」「ブラウザ」「ブラウザエンジン」で特定できない場合は本来”Other”という表示がなされるつもりで作っていました。
しかし、コード記述にミスにより”Other”という文字列が設定されていませんでした。 sad
これについては時期バージョンで修正しておきたいと思います。


もし、ユーザーエージェント文字列を確認でき、PHPコードの修正が可能であれば、参考までに以下に対応方法を記載しておきます。
Ver.1.3aであれば、NP_AccessAnalyze.phpの322~324行に比較するための値を持っており、323行に',Googlebot,Yahoo!,baidu.jp'とあるように、google、yahoo、baiduのロボットは補足されるようにしています。
もし、それ以外のロボットならばそのロボットが送ってくるユーザーエージェント文字列からロボットを特定する文字列を323行に追加することで、エージェントの表示で特定のロボットを分別することができます。

オフライン

#17 2012-07-30 11:01:25

okjaiki
メンバー
登録日: 2012-07-26
投稿: 4

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Reineさん、こんにちは。

アパッチのログを確認しましたところ、botの類からアクセスが多数ありました。
WBSearchBot、Baiduspider、bingbotなどなど。
教えて頂いた通り文字列をブラウザリストに追加しました。
これで様子を見てみようと思います。ありがとうございました。

オフライン

#18 2012-10-11 00:53:11

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

Ver.1.4をリリースしました。

1.3aの暫定対応を正式に組み込み、
幾つかの不具合修正などを行なっています。

詳細な説明の確認、ダウンロードはトピック先頭記事よりお願いします。

オフライン

#19 2012-10-24 19:55:09

サクラキャンドル
メンバー
登録日: 2004-08-25
投稿: 164
ウェブサイト

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

はじめまして。昨日からこのプラグインを使い始めましたが、一部文字化けが発生しました。

UTF-8の環境では問題有りませんでしたが、EUCの環境で、検索語句の日本語が文字化けします。NP_AccessAnalyze.phpの409,410行目でUTF-8に変換しているところが原因でしょうか?

また、少しいじって見まして、エージェントリストの$enginelist,$blowserlist,$oslistやサーチエンジンの$slistは、管理画面からの入力や外部ファイル読み込みになっているとバージョンアップやエージェントの登録時に便利だなと思いました。

変数の件は余談として、文字化けの件は何かアドバイスいただけるとありがたいです。


農場主の日常(管理人blog)
http://nojomaster.com/

オフライン

#20 2012-10-24 20:45:25

Reine
Administrator
From: 大阪
登録日: 2006-06-27
投稿: 80

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

サクラキャンドルさん、ご指摘ありがとうございます。

確かに、409、410行の文字コード指定がおかしいです。
"UTF-8" を _CHARSET に変更することで対処できます。
同じ語句で検索されても、既に収集された検索語句とは別扱いになってしまいますのでご了承ください。

各種判定用変数についてはどういう形で出すかも含めて考えてみます。
現行はなるべく通らない処理にCPUやメモリを食わないように使用直前で変数を作成させています。
今時のサーバースペックからしたら屁みたいなものかもしれませんが  smile

オフライン

#21 2012-10-24 21:24:43

サクラキャンドル
メンバー
登録日: 2004-08-25
投稿: 164
ウェブサイト

Re: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析

ありがとうございます。その改造でうまく行ったようです。
また何かありましたらよろしくおねがいします。


農場主の日常(管理人blog)
http://nojomaster.com/

オフライン

Board footer