[PHP-users 17383]Re: クッキーを使ってカウンターを作ったのですが(Re:初めまして)
UNO Shintaro
uno @ venus.dti.ne.jp
2003年 8月 19日 (火) 18:56:02 JST
>クッキーを使ってカウンターを作ったのですが
>一晩で平均100、多い時には1000くらい一気に上がります。
>まだまだPHP初心者なので色々とアドバイスお願いします。
じゃあ、色々と。
Webサーバのアクセスログは確認なさっていますか?
本当にそれぐらいアクセスがあって、別に異常ではないのかもしれないし。
ある意味、上昇しやすいカウンターって素晴らしいのでそのままでいいかも
しれないし。^^;
クッキーはクッキー、カウントアップはカウントアップで個別に、
ちゃんと動くかどうかを順に確認した方がいいと思うのですが、
そうなさってますか?
PHPのバージョンは幾つですか?
分からないと答えにくい場合もあるので明記お願いします。
実行時にwarningやerrorメッセージが出ていればそれがヒントになりますが
なにか出力されていますか?
もし開発環境でそういったメッセージの出力を抑制してしまう設定にして
いたら、問題解決につながるヒントをわざわざ捨ててることになります。
PHP日本語マニュアルのサイトはご存知ですか?
http://www.php.net/manual/ja
あとはソースを見て気付いたことを書きます。
>$date_now=date("Y/m/d");
>$cookie=$date_now;
>setcookie("last",$cookie);
クッキーを意図どおりに設定できていますか?
有効期限指定無しのクッキーは、ユーザがブラウザを閉じたらその時点で
消えてしまいます。また、クッキーの設定を行なえるためにはHTTPの性質
にもとづく制約条件があります。
http://www.php.net/manual/ja/function.setcookie.php
>$cnt_num = fgets($fp,64); //count.datから1行64桁取得
そこらのごく一般的なサーバで、PHPの数値変数で正確にカウントできる
範囲はせいぜい十数桁なので、64桁ってのはムチャのような…。
他の言語で作られたアクセスカウンターの移植をなさっているのでしょうか?
http://www.php.net/manual/ja/language.types.integer.php
http://www.php.net/manual/ja/language.types.float.php
>/////COOKIEの読み込み/////
>if( strcmp( PHP_VERSION, "4.2.0" ) >= 0 ){
> $gdata = $_COOKIE["last"] ;
>}else{
> $gdata = $last ;
>}
この場合、$lastにCOOKIEのデータが入っているかどうかはバージョンとは
関係ありません。$_COOKIEにデータが入っているかどうかはバージョンで
決まります(「4.1.0以上なら」がベターです)。
4.2.0では単に、環境設定ファイル(php.ini)の初期設定値が変わっただけです。
http://www.php.net/manual/ja/features.cookies.php
>////クッキーの書き込み ////
>if($gdata != $date_now){
> $cnt_num++;
> fseek($fp,0); //ポインタを0に移動
> flock($fp,2); //2-排他ロック
> fwrite($fp,$cnt_num);
>}
>fclose($fp);
ここって「クッキーの書き込み」かな。「カウントアップ」とかじゃないかな。
読むのがfgetsなら書くのはfputsの方が対称性があって好きです。
PHPではfputsとfwriteはPHPでは同じ機能の別名らしいですけれど一応。
--
UNO Shintaro, 宇野 信太郎
mailto:uno @ venus.dti.ne.jp
http://www.venus.dti.ne.jp/~uno/
PHP-users メーリングリストの案内