phpとmysqlについて。


アクセスカウンターや、アクセス解析を作成する場合、
小さく1サイト分の設置なら
テキストでデータを保存しておけばいいのですが、
複数のサイトを解析する場合(例えば1000個)、
DBにデータを保存する方が、管理が楽だと思います。

ただ、ページが表示されるたびに
DBへカウントなどをすると思うので、
とてつもない負荷がかかる気がするのです。

レンタルカウンターやレンタルアクセス解析などは、
このあたりの負荷をどう軽減しているのでしょうか?

それとも、それほど多大な負荷ではない、ということなのか気になります。

以前「mogura」というアクセス解析(mysql/php)のフリーソフトを使ったところ、
大量のアクセス数があるサイトだと、
とんでもなく重くて参ってしまったことがありました。。。


1000個のサイトを、一括で管理画面で管理することを前提として、
phpとmysqlでアクセスカウンターや解析を作成する方向で考えているので、
負荷にかんするアドバイスなどをいただけますと助かります。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/02/11 17:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント28pt

アクセスカウンターですが、これはテキストファイルに格納しているケースが多いですね。

そのサイトのURL(またはURLをハッシュ化した値)をファイル名としておけば、検索するオーバーヘッドが少なくて済みます。「fopen→ファイルを読む→加算する→ファイルを書き戻す」という手順で実現できます。


アクセス解析ですが、まず、アクセスログをサイト別のテキストファイルに納めます。アクセスカウンターと同様にサイトのURLをファイル名として、アクセスがある度に、必要な情報を追加していくだけです。

問題は、アクセス解析の計算処理です。

アクセスログが大きいとそれなりに時間がかかるので、たとえば1日1回、バッチ処理(cronを走らせる)で計算プログラム(PHPで作ればよい)を動かします。サイト数が1000個なら、たとえば100個ずつ計算スケジュールをずらしてcronを走らせればいいでしょう。


リアルタイムでアクセス解析をしたり、ログの検索処理を行うのであれば、MySQLのようなDBMSが必要になりますが、経験されている通り、莫大なマシンパワーを必要とします。

上述のように、バッチ処理で済むような要件に納めるのが肝要かと存じます。


ちなみに我が家のホームページのトップページにあるアクセスカウンタと、アクセス状況は、1日1回、夜間バッチで PHP スクリプトを動かし、Apacheのアクセスログを解析し、結果をXMLファイルの形で生成しています。

id:onigirin

どうもありがとうございます。

リアルタイムでなければ、テキストファイルでの管理がよさそうですね。

現在は、例えば「忍者アクセス解析」などのような、

リアルタイムでのリンク元などもチェックし、

半永久的にデータを残したいので、

DBで考えて悩んでいます・・・。

2009/02/04 18:33:58
id:hijk05 No.2

回答回数1307ベストアンサー獲得回数23

ポイント42pt

>レンタルカウンターやレンタルアクセス解析などは、

>このあたりの負荷をどう軽減しているのでしょうか?

テキストにアクセスログのような形式で一時保存します。

定期的にバッチプログラムを走らせて、DBに格納します。

必要なくなったアクセスログを削除します。

id:onigirin

どうもありがとうございます。

すべてまずはテキストで保存しているのですね。

生ログみたいなものですね。

DB処理は、後から一括で行う、というのは考えが巡りませんでした。

勉強になります。

2009/02/04 20:28:58
  • id:samasuya
    大規模サイトでもテキストファイル管理なんだと知って、ちょっと意外でした。

  • id:onigirin
    リアルタイムで「過去7日分」などを閲覧するとなると、
    テキストログとDBログを合成する必要があるので、
    実質的な運用ではどうなってるのか気になるところですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません