■掲示板に戻る■ 全部 1- 最新50 [PR]ぜろちゃんねるプラス[PR]  

【白紙から】ウェブページ製造【作って何ぼ】

1 :塊素 司令:2014/03/13 14:29:00 ID:Lyw9xwrisU
 ウェブページの製造について語るスレです。
 HTMLからサーバ運営まで、ウェブページに関する内容を取り扱います。

2 :塊素 司令:2014/03/13 17:17:00 ID:Lyw9xwrisU
 ttp://hades.worlds-walkers.org/~public_space/_B/01/test/read.cgi/WWorg/1383648614/400

 さて、PSO2 世界群歩行者達チームサイトなどでも使用しているアクセスカウンタですが、自作ロジックです。
 アクセスカウンタやアクセス解析に関しては基本的にはテキストファイルに記録していきます。アクセスカウンタの場合は総アクセス数に関しては数字だけを記録し、日別カウンタについてはアクセスページアドレスとそのページへのアクセス数を一行ずつに記録しています。

 業務上、データベースにこの系統のデータを記録していくシステムは触ったことがありますが、「更新予定がないデータをただ溜めて行くだけならテキストファイルでいいよね」という考えがあります。

【概要】
・日別アクセスカウンタについて
 アクセスされたページアドレスとそのページへのアクセス数をセットにし、ページアドレスごとに行で管理している。
 アクセスされたページアドレスが記録されていない場合はファイル末尾に追加、記録されている場合はカウントアップ。
 ファイルは一人一日一回だけカウントされるファイルと、一人一日何回でもカウントする二種類が存在。これはどのページが人気があるかを知るための仕様。

・総アクセスカウンタについて
 元は日別アクセスカウンタの総記録を取るものだった。サイトの運営が長期化するにつれてファイル容量が増加し、ファイルの内容が文字化け、大量のnullデータが突っ込まれるファイル破損が起きることがあった。特にこれは一人一日何回でもカウントアップされるファイルで顕著。
 そしてついに一人一日一回カウントのファイルにまで破損が発生し、正確な総アクセス数の算出ができなくなった。
 このため、総アクセスカウンタファイル側はページごとのカウントをやめ、集計値だけを記録するようにした。一人一日一回カウントと一人一日何回でもカウントは引き続き、別々に記録されている。



3 :のりお:2014/03/13 20:26:00 ID:twvJJBr7Gs
僕のイメージなのですがカウンターという機能は2つだけだと思っています。
・アクセスされた時に、ログファイルに書き出す。
・必要な時に、読み出す。
で、僕がファイルベースでカウンターを実装するなら、下のような形かなぁ〜。

・すべてのページと同名のファイル「xxxxxx.count」に、「日時」「IPアドレス」「セッションID」のレコード
  (常に1レコード追記のみで、参照時に必ず呼ばれるようにする。
  重複アクセスは取るが、セッションを貼れていないもの、IPアドレスのない物は取らない。ロボット検索・Bot対策)

・集計は、表示の必要があるのであれば、毎回行う必要があるので、処理が必要
  管理者が見たい時だけならば、管理画面などに集計ボタンを追加すればページ表示の負荷は軽減する。

・集計処理は、すべての.countファイルのパスを取得し、foreachでまわしながら、それぞれのファイルレコード数を集計する。(readする)
・溜まり続けるので、集計時にある程度以上であれば、前側から自動で削除する。(たとえば、1万レコード以上になったら、順次削除のような処理)
・カウンターファイルへの書き込みをする場合(レコード追加・削除時)、
  【php flock - Manual】(排他制御)
  ttp://us1.php.net/manual/ja/function.flock.php
  を行う。

処理を複雑にしてしまうと、ファイルアクセス時間がどうしても長くなってしまう為、排他制御を行っていない場合、壊れる可能性が高いです。
ファイルに対する処理を最低限にして、参照時に集計を行った方がまだましな状況になります。
100前後のページ数であれば、PHPで集計してもたいした時間はかかりません。(遅くてもミリ秒単位)
集計対象が1万ページ以上あるのであれば、やはりDB上でバイナリーの速度だと思われます。

セッションは、
session_start(); // index.phpなどの最初の方
$sessionID = real_escape_string(session_id(); // 必要になったら、これで取得する。
参考
ttp://doremi.s206.xrea.com/php/tips/session.html

元の物がわからないので、想像で話していますが。。。


4 :塊素 司令:2014/03/14 22:28:00 ID:9DUqkcRegk
>>3
 ソースを出してませんからねー。出した方がいいのかどうか。

 僕の方で実装しているものは、アクセス解析とアクセスカウンターは完全に分けて実装しています。
 共に全ページで実行され、記録されます。チームサイトをよく見てもらうとわかると思いますが、アクセスされている PHP ファイルは基本的に一つだけです。アップローダーとかはフリー配布されているものを使用しているので違うんですけどね。

■アクセス解析では以下のものを記録しています
・IP
・ホスト名
・アクセス年月日
・リクエストメソッド(GET / POST)
・アクセスページ
・プロトコル
・リファラー
・ユーザーエージェント

 Apache のアクセスログを参考にしてます。
 日毎にファイルを分けています。月毎にディレクトリを分けています。月毎に圧縮保管って感じですね。

 アクセスカウンターでは述べ数と一日一回のカウントアップでファイルを分けています。これもファイルは日毎。
 サーチエンジンはユーザーエージェントを見て弾いてます。このため、ちゃんと名乗ってくれないものは弾けなかったりするんですが、それは仕方ない。


5 :のりお:2014/03/15 10:20:00 ID:XpKZgJBZNs
>>4
ソースを出すのは、なにかと問題ありそうなので、ゲーム内で僕のメールアドレス送っておくので、そちらに送ってください。

アクセス解析結果を元に、すべてのアクセスカウンタも算出できそうですね。
書き出しは、それだけでもいいかもですね。
後は、集計時にアクセス解析ログからの文字列解析を実装すればシンプルかもですね。
というか。。。。。自分のところのサーバーなら、Apachのログを解析した方が実現は早いのかもですがw
(Apachのログを解析ツールは、どこかに落ちていた気がします。)

余談になりますが。。。僕は、結局「アクセス解析って誰得?」ってなって。。。アクセスカウンタや解析の実装をやめました。
解析も、カウンタもユーザー情報を取得して、ニーズにあった物を作成すると言う名目で使いますが、
実際その情報ではユーザー側のニーズはつかめないので。。。。
なので、SNS化が進んで、ユーザーの住所や趣味などの収集に走っているのが現状なんですよね


6 :トトハム:2015/05/07(木) 23:06:28 ID:+GMt/zBl
連絡遅れてすいませんm(_ _)m

ただいまルーターがぶっ壊れたり資格勉強があったりと何かと用事やトラブルが立て続いており、ほぼログインできていません。
いまは合間を縫って書き込みしていますが、ログインできるようになるまでまだしばらくかかる予定なので、しばらく休止でお願いできますか?

ログインできるようになり次第また報告します。

7 :トトハム:2015/05/07(木) 23:07:40 ID:+GMt/zBl
>>6
スレ間違えましたm(_ _)m

8 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

9 :サツキガセ:2015/07/13(月) 10:31:22 ID:YCVEi8kW
oh,yeah
I am a pen.

10 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

11 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

12 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

13 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

14 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

15 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

16 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

17 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

18 :サツキガセ:2015/07/14(火) 15:37:34 ID:hrrVGUX1
started to slow
まで読んだ

19 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

20 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

21 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

22 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

23 :αβοοη..._〆(゚▽゚*):αβοοη..._〆(゚▽゚*)
αβοοη..._〆(゚▽゚*)

8KB
新着レスの表示

名前: E-mail(省略可)
READ.CGI - 0ch+ BBS 0.7.4 20131106
ぜろちゃんねるプラス