アクセスカウンターや、アクセス解析を作成する場合、
小さく1サイト分の設置なら
テキストでデータを保存しておけばいいのですが、
複数のサイトを解析する場合(例えば1000個)、
DBにデータを保存する方が、管理が楽だと思います。
ただ、ページが表示されるたびに
DBへカウントなどをすると思うので、
とてつもない負荷がかかる気がするのです。
レンタルカウンターやレンタルアクセス解析などは、
このあたりの負荷をどう軽減しているのでしょうか?
それとも、それほど多大な負荷ではない、ということなのか気になります。
以前「mogura」というアクセス解析(mysql/php)のフリーソフトを使ったところ、
大量のアクセス数があるサイトだと、
とんでもなく重くて参ってしまったことがありました。。。
1000個のサイトを、一括で管理画面で管理することを前提として、
phpとmysqlでアクセスカウンターや解析を作成する方向で考えているので、
負荷にかんするアドバイスなどをいただけますと助かります。
アクセスカウンターですが、これはテキストファイルに格納しているケースが多いですね。
そのサイトのURL(またはURLをハッシュ化した値)をファイル名としておけば、検索するオーバーヘッドが少なくて済みます。「fopen→ファイルを読む→加算する→ファイルを書き戻す」という手順で実現できます。
アクセス解析ですが、まず、アクセスログをサイト別のテキストファイルに納めます。アクセスカウンターと同様にサイトのURLをファイル名として、アクセスがある度に、必要な情報を追加していくだけです。
問題は、アクセス解析の計算処理です。
アクセスログが大きいとそれなりに時間がかかるので、たとえば1日1回、バッチ処理(cronを走らせる)で計算プログラム(PHPで作ればよい)を動かします。サイト数が1000個なら、たとえば100個ずつ計算スケジュールをずらしてcronを走らせればいいでしょう。
リアルタイムでアクセス解析をしたり、ログの検索処理を行うのであれば、MySQLのようなDBMSが必要になりますが、経験されている通り、莫大なマシンパワーを必要とします。
上述のように、バッチ処理で済むような要件に納めるのが肝要かと存じます。
ちなみに我が家のホームページのトップページにあるアクセスカウンタと、アクセス状況は、1日1回、夜間バッチで PHP スクリプトを動かし、Apacheのアクセスログを解析し、結果をXMLファイルの形で生成しています。
>レンタルカウンターやレンタルアクセス解析などは、
>このあたりの負荷をどう軽減しているのでしょうか?
テキストにアクセスログのような形式で一時保存します。
定期的にバッチプログラムを走らせて、DBに格納します。
必要なくなったアクセスログを削除します。
どうもありがとうございます。
すべてまずはテキストで保存しているのですね。
生ログみたいなものですね。
DB処理は、後から一括で行う、というのは考えが巡りませんでした。
勉強になります。
どうもありがとうございます。
リアルタイムでなければ、テキストファイルでの管理がよさそうですね。
現在は、例えば「忍者アクセス解析」などのような、
リアルタイムでのリンク元などもチェックし、
半永久的にデータを残したいので、
DBで考えて悩んでいます・・・。