1

PHPでファイルのダウンロードを提供しているWebアプリケーションがあります。file fieldすべてが正常に機能しており、インクリメントする場所にダウンロード列があります。

しかし、私はダウンロードの完全な統計を取得したいと考えてeach daymonthますtime of daywhich location

しかし、そのためのmysqlテーブルを設計する方法を見つけることができません。そのために、すべてのダウンロード要求をデータベースに記録する必要がありますか? 実世界でのデザインパターンまたはその例

4

2 に答える 2

0

次のようなテーブルを作成します。

+-------------+---------------------+------+-----+-------------------+----------------+
| Field       | Type                | Null | Key | Default           | Extra          |
+-------------+---------------------+------+-----+-------------------+----------------+
| download_id | bigint(20) unsigned | NO   | PRI | NULL              | auto_increment |
| created     | timestamp           | NO   | MUL | CURRENT_TIMESTAMP |                |
| filename    | varchar(32)         | YES  | MUL | NULL              |                |
| ip          | int(10) unsigned    | NO   | MUL | NULL              |                |
+-------------+---------------------+------+-----+-------------------+----------------+

ファイルがダウンロードされるたびに、ファイル名と IP アドレスを適切な列に挿入します (他の 2 つは正しい情報で自動入力されます)。次に、このテーブルに対してクエリを実行して、分析を収集できます。例えば:

2013 年 6 月のダウンロード数を確認するには:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE DATE(created) BETWEEN '2013-06-01' AND '2013-06-30';

ファイル「somefile.zip」が投稿されてから何回ダウンロードされたかを確認したい場合:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip';

または、同じ訪問者によってダウンロードされた重複を除いて、「somefile.zip」がダウンロードされた回数を確認したい場合:

SELECT COUNT(*) AS total_downloads FROM file_download WHERE filename = 'somefile.zip' GROUP BY ip;

ダウンロードごとにエントリをログに記録することで、分析できるデータの種類を非常に柔軟に選択できます。各エントリが必要とする容量は最小限であり、ダウンロードごとに 1 つの値をインクリメントするよりも多くのオプションにアクセスできます。

于 2013-07-30T08:01:46.610 に答える
0

ファイルのダウンロードで応答する前に、分析目的でリクエストの詳細をログに記録するコードを少し追加できます。DB 設計オプションについて:

  • カウントだけを保存し、ダウンロードを提供するときに増分します。スペースをほとんど消費しませんが、分析とレポートの柔軟性が低下します。
  • 個々のダウンロードの保存: タイムスタンプ、フィールド、さらには要求元の IP を保存できますが、これらはすべて分析に非常に役立ちますが、このアプローチではかなりのスペースが消費されます。
  • たとえば、過去 1 か月のデータを完全に保存し、それらを DB から zip ファイルにアーカイブして、レポート用に増分され、分類されたデータを保存するなど、途中で会うこともできます。

Server Side Google Analyticsのようなものを使用することもできます

于 2013-07-30T06:47:49.570 に答える