【120日目】ページごとのアクセス解析をするPHPを作成したい-7
Posted: Last Update:
昨日から再開した、ページごとのアクセスを解析するPHP。数字の加算がうまくいかなくて右往左往しています。今日こそはうまい方法を見つけたいです!
これまでの成果
昨日までの作業でこのようなPHPを作成することができました。
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = '<'.$value.' count:([0-9]+)>';
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches == 0 || $matches == false){
echo "nomatch";
$fp = fopen("$mypath/top/access.txt", "a+");
fwrite($fp, "\n".$value." count:1");
fclose($fp);
}
else{
foreach($matches as $value1){
echo "matched";
$replace = preg_replace('<'.$value.' count:([0-9]+)>', $value.' count:$2+1' ,$value1[0]);
}
$str = preg_replace($findvalue, $replace, $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
?>
エラーは出ていないものの、書き出される数字が「count:+1」とかになっています。「count:$2+1」の「+1」が書き出されている状態です。計算方法が分からないまま、昨日は時間切れになってしまいました。
教えて!Google先生!
今日はとにかく検索しまくりますよ~。もしかしたら検索するだけで時間が終わってしまうかもしれませんが…。
まずはPHP 加算で検索。「$i++」という書き方と「++$i」という書き方があるんですね。試してみよう。…数字の代わりに「++」が表示されてしまいました…。
直接計算するのは諦めます…。仕方ないので、一度数字部分を変数に入れて、計算、そしてその値を代入する、という方式に移行しましょう。もう一度検索して、やり方を確認しておきます。
できた!
いったん数値を$countに代入して、「+1」で計算。$countをファイルに書き込む方式に変更しました。動かしてみると、…うまくいきました!書き出したファイルにはこんな感じで数字がプラスされています!
書いたPHPはこのような物です。
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = '<'.$value.' count:([0-9]+)>';
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches == 0 || $matches == false){
$fp = fopen("$mypath/top/access.txt", "a+");
fwrite($fp, "\n".$value." count:1");
fclose($fp);
}
else{
foreach($matches as $value1){
$count = $value1[1];
$count = $count+1;
$replace = preg_replace('<'.$value.' count:([0-9]+)>', $value.' count:'.$count ,$value1[0]);
}
$str = preg_replace($findvalue, $replace, $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
?>
日記を除外する
カウントするPHPは完成したのですが、日記は別に要らないんですよね…。そして、トップページとかのアクセスも不要なので、「開発記事だけをカウントする」PHPにアップグレードしていきたいと思います。
作業中にエラー発生しつつも、書き換え完了!先頭行を足しただけです。開発記事だけカウントできるようになりました!
if (isset($filenum) == true && $urlfolder == "article" && $filenum !== "welcome"){
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = '<'.$value.' count:([0-9]+)>';
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches == 0 || $matches == false){
$fp = fopen("$mypath/top/access.txt", "a+");
fwrite($fp, "\n".$value." count:1");
fclose($fp);
}
else{
foreach($matches as $value1){
$count = $value1[1];
$count = $count+1;
$replace = preg_replace('<'.$value.' count:([0-9]+)>', $value.' count:'.$count ,$value1[0]);
}
$str = preg_replace($findvalue, $replace, $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
}
今日はここまで
いちおうPHPは完成したのですが、もう少しきれいに書ける気がするので、本番環境に写さずにいったん寝かせます。
明日はもう少しPHPをきれいにして、本番環境に移植して完成です!長かったけど、明日で終わりだ!
それでは、また明日!
おまけのロードマップ
サイト作成がどのくらい進んでいるかロードマップで進捗を確認すると、ここまで進んでいます。
- 準備 - サイトの全体像を決める
- 使用するプログラミング言語を決めて環境を整える
- サイトの基本構造を作って公開する
- 収益化に最適なサイトにアップグレードする
- GoogleアドセンスとAmazonアソシエイトの申し込みをする ←完了!
- ローカルで簡単に入力ができるようにフォームを作る
- フォローアップ - より収益化に向いたサイト構造に変更する
