2010-12-27 13 views
2

ユーザーが画像を保存して共有できるアプリケーションを保守します。システムは、バックエンドのMongoDBによって動力を与えられます。ほとんどのイメージ描画ページはフラットなHTMLファイルとしてキャッシュされますが、ファイルをロードする直前にいくつかのコードを実行できます。オブジェクトのビュー数を効率的に保存するには?

システムのビュー数を実装することに決めました。私はそれのための最高の保管場所は何か不思議です。それはMemcachedのようにすべきですが、1時間おきにviewcountを保存しなければならないので、サーバを再起動しなければならない場合でもビュー数は失われません。

これに最適な解決策は何ですか(できればクライアントとしてPHP拡張機能を使用することが望ましい)?

答えて

0

閲覧回数はキャッシュされたフラットHTMLファイルのようですか?なぜファイルの先頭にいくつかのコードでそれらを格納しないでください。ファイルが表示されたときに取り出すことができます...

+0

ビュー数は、PHPによってJS変数としてHTMLファイルの前に付加されます。それからJavascriptは正しい場所に置きます。そして、あなたが提案しているものは効率的ではありません。 –

0

私は、memcachedにビュー数を格納してから、ビュー数に基づいてランダムな間隔でデータベースを更新することでこの問題を解決しました。データベースに格納する確率は1/sqrt(ビュー数)でした。これは素晴らしい特性を持っていました。ビューの数が4のように小さい場合、データベースに書き込む確率は1/2です。オブジェクトのビュー数が1,000,000と高い場合、確率は1/1000になります。それはうまくいくようだった。

0

あなたはリアルタイムのレポート/統計情報を必要としない場合は、毎日のApacheログを解析して一致数をデータベースに保存するか、フラットファイル形式で保存する必要があります。

メリット?

  1. それは既存のアプリケーションに悪影響を及ぼすことはありません
  2. それは、追加のメモリキャッシュを必要としないか、そう
  3. だけ(一日一回)
  4. 回復可能
日次ログのapacheを解析する必要があります

もちろん、これは定期的にデータベースを読む/更新するためのクローンジョブの設定からあなたを止めるわけではありません(新しいビュー数の場合)