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

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

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

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


8KB
続きを読む

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