掲題の通り、PHPでアクセスログを管理(管理画面より閲覧)できるシステムを作ろうと思っています。システムの実現方法に悩んでいます。「こういうのが最も動作が軽い」から「実務でこういうのを作った」「自分が作るならこう作る」までなんでも良いので(ちょっとしたヒント程度のものでもかまいませんので)アイデアをいただけたらありがたいです。
要望は以下のとおりです。
・管理画面から閲覧ができる(ログファイルを見る必要がない)
・サーバーへの負荷が少ない
・リアルタイムがベスト
※具体的なソースのご提示はなくてもかまいません
※対象サイトの月間PVは3万~5万程度です。
※「Google Analyticsを使えば良い」はお控えください
当方で考えたシステムは以下の3通りです。
==
1. アクセスログテーブルを作成し、ユーザーからのアクセスするたびにDBにINSERTする
2. テキストファイルに出力をしておいて、アクセスの少ない時間帯にバッチを動かして、テキストからDBにINSERTする
3. テキストファイルに出力して、管理画面でアクセスするたびにテキストを加工し、閲覧できるようにする
==
どれも、どこかに大きな負荷がかかりそうな気がして、いまいちこれで良いのか、という感じがしています(3万~5万というPVがどの程度のものかがいまいち掴めていない、というのもありますが…)
以上です。よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
あなたがどういう状況にあるのかわかりませんが、開発の経験がほとんどない方なのでしょうか?でしたら普通に周りの先輩などに聞けばいいと思うのですが。
…まぁそれができない状況だから質問しているということなのでしょうかね。月間5万のトランザクションという事だと私からすると小規模で、どんなつくりにしても問題は起きないだろうと思ってしまいます。将来アクセスが激増して月間500万になったとしても、30日*24時間*60分*60秒=259万秒で割れば、1秒当たり1.9件です。ので普通にリアルタイムにDBにINSERTで何も問題はないでしょうね。さらにピーク時は平均の10倍のアクセスがあるのだとしても、1秒19件、1件当たり50msならば(そこまで行くとサーバー性能によりますが)ギリギリ持つと思います。というかそれくらいは耐えられるシステムを作りたいものです。
あと考慮することはDBの容量など。1レコードあたりのバイト数(もちろんインデックスも付与するのでしょうからその分の容量もきちんと考慮する事)と何件分・何年分保存するかの要件から保存に必要な容量を計算しそれを根拠にハードを確保したり、逆にハードが決まっているなら何件保存できるか逆算しておくべきでしょう。そして古いものは削除するのかとかその辺を考えます。「どのくらい使えるのか自分でもさっぱりわかりません」なんてことを言うものなら、入社1年目でもかなり恥ずかしい事だと思います。
それから検索ですかね。将来データが溜まった時に例えば100万件のデータを1画面で表示しようとすればどうしたってHTML作成に時間がかかってしまいます。ので、ページングしたり検索数の上限値を決めたり、期間指定を必須とし半年以内とするとか、データ数をしぼる何かしらの工夫は必要でしょう。
さらに、データの追加と検索はプロセスを分離した方がいいかと思います。万が一、検索時にデータを絞る処理がきちんとできていなくて、検索の応答が返ってこなくなってしまった場合などでも無関係にデータの追加ができるようにとか。
この回答への補足
質問内容は「高負荷によって障害が起きないようにするための方法」ではありません。先頭に書いてあるとおり「軽量なアクセス解析システムのプログラム実装アイデア」です。システムという書き方が悪かったですかね。質問の仕方が悪かったのならすみませんでした。
補足日時:2014/07/24 17:39お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(IT・Webサービス) サイト上のフォルダ階層一覧、ファイル一覧を閲覧する方法は? 1 2022/11/11 15:49
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- その他(クラウドサービス・オンラインストレージ) OneDriveのアクセス権限の変更について教えてください! 1 2023/03/02 13:49
- ノートパソコン 大学のレポート作成専用ノートパソコンとして、VAIO SX12(Core i7、32GB、1TB-S 5 2023/06/10 11:14
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlspecialcharsについて
-
フォームを使わずにPOST送信す...
-
php history.back()の戻るボタ...
-
php 入力画面から確認表示画面...
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
switch()文で値の大小比較
-
DTOとEntityの差は何ですか。
-
shシェルスクリプト 空白行の...
-
【C#】DataGridViewの最大列数...
-
バッチファイルでpingの結果を...
-
phpでcookieがうまく保存されない
-
C#で特定LANアダプタの状態を取...
-
「取得先」という表現について
-
PHPのセッション有効期限について
-
findstrのerrorlevel
-
URLのパラメータをGETのままで...
-
syntax error, unexpected 'ech...
-
アクセスの度にIPアドレスを変...
-
ファイル名のリスト取得について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ログイン画面から入って、「戻...
-
php 入力画面から確認表示画面...
-
IFRAME内PHPのセッション変数取...
-
php に関して質問です。 各ユー...
-
HTMLエスケープ処理とデーター...
-
POSTで受け渡したものを保存し...
-
「ページネーション」で検索キ...
-
VBAで重複チェックの仕方を教え...
-
PHPで返信メールにチェックボッ...
-
フォームを使わずにPOST送信す...
-
asp.netでのセッションを使用し...
-
飛び先のランダムURLの取得方法...
-
php history.back()の戻るボタ...
-
閉じるボタン「×」を制御したい
-
ブラウザの戻るボタンで重複登...
-
ウェブアプリの設計に問題がな...
-
ブラウザバックしてもチェック...
-
ページに時間制限
-
PHPで値を保持する方法
-
パスワード認証後の、以降のペ...
おすすめ情報