Info

2017年11月23日 (木)
19人が見てるかも
Menu
Top
PHP+MySQL
カウンター1
imgタグ変換
カウンター2
Downloads
BBS
掲示板
スクリプト関係
Links
History
レンタルサーバ比較
RSS Viewer (実験)
E-Mail me E-Mail icon
PHP WebRing
@PHP.ring
各種書籍

PHPプロ!マガジン 2007年夏号表紙
PHPプロ! マガジン
2007年夏号 Vol.4


PHP関連書籍一覧
DB関連書籍一覧
3D関連・その他書籍


Java/JDBC+MySQLデータベースプログラミング
Java/JDBC+MySQLデータベースプログラミング


PHP+MySQL - カウンター2

2. DBCNTで使用するテーブル

 DBCNT で使用するテーブルですが、SCDB に比べて使用するカラムがいくつか増えています。このテーブルの名前を counter とすると、

[counter]
--------------------------------------------------
 name | day | lastip      | total | today | yeday
------+-----+-------------+-------+-------+-------
 cnt0 |   0 | 0.0.0.0     |     0 |     0 |     0
 cnt1 | 222 | 12.34.56.78 |  1234 |    12 |    34
--------------------------------------------------

こんな感じになります。
それぞれのカラムは次のような意味を持ちます。

nameカウンターの名前
day今日の日数(0〜365)
lastip同ホストからの連続アクセス検査用文字列
totalカウント総数
today今日のカウント数
yeday前日のカウント数

 day は1月1日を0として今日が何日目かという値が入ります。データベース上のこの値と今日の値を比較して、違っていれば日付が変わったと判断します。
 total はカウント総数、today は今日のカウント数、yeday は前日のカウント数です。

 このカウンターには欠点が1つあって、「前日のカウント数が必ずしも前日の値にならない」というのがあります。というのも、アクセス数が0の場合データベースが更新されないので、たとえば前回のアクセスから3日後に次のアクセスがあった場合、前日の値は3日前の値になります。ま、これはのちのち改良するということで…

 このテーブルを作成するときの SQL 文は、以下の様になります。

CREATE TABLE counter (
    name VARCHAR(16) NOT NULL UNIQUE,
    day INTEGER NOT NULL DEFAULT 0,
    lastip VARCHAR(64) NOT NULL DEFAULT '0.0.0.0',
    total INTEGER NOT NULL DEFAULT 0,
    today INTEGER NOT NULL DEFAULT 0,
    yeday INTEGER NOT NULL DEFAULT 0,
    PRIMARY KEY(name)
    );

 レコードを作成するときの SQL 文は、以下の様になります。

INSERT INTO counter (name) VALUES ('cnt0');

 テーブル・レコード共にあらかじめ作成しておきます。

[Page: 1 (2) 3 4 5 6 7 ] →次

広告

ServerQueen
月々525円〜
RSS Feeds
RSS News Feed 全ニュース
RSS News Feed DA実験室関連
RSS News Feed PHP/DB関連
[Valid RSS]
RSS feed meter for http://www.darkangel.jp/

check out my neighbors in meatspace

RDF Resource Description Framework Developer Icon