[PHP-users 9479] Re: FreeScript - Counter (Re: SSI と同様の関数とは?)

Masashi Matsushita php-users@php.gr.jp
Sat, 24 Aug 2002 16:27:53 +0900


松下@さいたまです。

普段は仕事でもPerlばっかりでちょこちょこPHPは勉強中です。
というわけでとりあえず動き優先のスクリプトですが・・・

> 自分が欲しいと思うのは
> 1.本日のカウント
> 2.昨日のカウント
> 3.Totalカウント
> 
> この3つです。
> 
> いままで使っていたものがそうなのですが、php版のFreeスクリプトをいろいろ探し
> ても見つからなかったので、しょうがなく!って感じです。
> ご存知のかた、いらっしゃいましたら合わせてよろしくお願いいたします。

PHPのカウンタだとPerlで作るよりも簡単だと思うんですけど。

うちのHPで暫定で作ったのが

<?php
	session_start();
	// カウンタのカウント
	if (!isset($PHPSESSID)) {
		$fp = fopen("count.dat", "r+");
		$count = fgets($fp, 10);
		$count = $count + 1;
		session_register("count");
		fseek($fp, 0);
		fputs($fp, $count);
		fclose($fp);
	}
?>

<中略>

<?php
echo "<img src=\"img/", ($count / 100000) % 10, ".jpg\">";
echo "<img src=\"img/", ($count /  10000) % 10, ".jpg\">";
echo "<img src=\"img/", ($count /   1000) % 10, ".jpg\">";
echo "<img src=\"img/", ($count /    100) % 10, ".jpg\">";
echo "<img src=\"img/", ($count /     10) % 10, ".jpg\">";
echo "<img src=\"img/",  $count           % 10, ".jpg\">";
?>

実験の意味もあったのでセッションとって同一セッション内ではカウントされな
いようにしてたりします。
実際の呼び出し部分はどこかに載ってたサンプルスクリプトを参考にしただけで
すのでもう少しスマートにできると思いますけど。



これはTotal分しかないので本日と昨日を作りたければ
ファイル数の肥大化を考えなくていいのであれば毎日一つずつカウントファイル
を生成すれば簡単にできると思いますよ。

例えば8/24のカウントファイルのファイル名を20020824.datとかしておいて、
localtimeを取得してファイル名と違っていれば(ようは8/25になった時点で)
新たに20020825.datを生成してこちらを読み書きすればいいだけですので。

カウンタは勉強には一番お手軽だと思いますので自作してみてはどうでしょうか?


普段、仕事でもPerlでCGI組んでる方が多いのでPHPならこういうことが簡単にで
きるのにとかって多々思ってます。
仕事で使えるようになるといいな。
#まだまだどこのサーバでも使えるというわけじゃないですもんねぇ。

/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
松下将史
E-Mail:machan@cyber-formula.net
URL   :http://www8.sppd.ne.jp/machan/
/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_