2

負荷がかかった状態でデータベースを傷つけないリアルタイムの一意のカウンターの良い習慣は何ですか?

4

4 に答える 4

1

ストレスが少ない?問題をアウトソーシングしてください :)、たとえば、Google アナリティクスを使用します。

(ただし、Google Analytics はリアルタイムではありません。分析ツールの他のプロバイダーは、リアルタイム ソリューションを提供していますが、KISSmetrics など) 。

于 2011-10-31T13:07:18.823 に答える
0

ユーザー セッションをデータベースまたはキャッシュ システム (APC や Memcached など) に格納する (カスタム) セッション ハンドラーを使用する場合があります。

そうすれば、Web サイトのアクティブなセッションの数をカウントできます (各訪問者には一意のセッション ID が与えられます)。

セッションに非常に短いセッション タイムアウトを与えて、ユーザーがページにアクセスしなくなった場合でも、ユーザーが「アクティブ」としてカウントされないようにします。

セッションを使用すると、複数の人が同じ IP アドレスを共有している場合でも、現在 Web サイトにアクセスしている人の数を追跡できます。

于 2013-02-01T22:55:09.467 に答える
0

visitor_counteripとを含むデータベース テーブルwhenwhen次に、ページが読み込まれるたびに、 (datetime フィールドまたはタイムスタンプを含む int フィールド)から指定された時間内にユーザーの IP がデータベースにあるかどうかを確認します。IP がデータベースにある場合は、何もしないでください。そうでない場合は、追加します。その後、経過時間に基づいて値を定期的に整理しますwhen。合計訪問者数には COUNT(ip) を使用できます。

これは、過去 X 時間の訪問者を表示するように調整できます。また、visitsフィールドを追加して、ユーザーがロードしたページ数などを確認できます。

これがどのように機能するかは完全にはわかりませんが、理論的にはあなたが望むことをすると思います。

于 2011-10-31T13:13:07.247 に答える
0

Web サイトを構築していてカウンターが必要な場合は、無料で使用できる分析 (Google アナリティクス、Yahoo アナリティクスなど) と、単純なカウンター スクリプトよりもはるかに多くの情報を提供できるカウンター サービスがたくさんあります。これは私のお勧めです。

ただし、自分で何かを構築していて、サーバーを制御している場合は、別のツールを使用して実際にカウントを行うことができます。memcache は「add」および「increment」メソッドをサポートしているため、この目的で memcache を使用しました。このメソッドは、(コマンドの使用に関する制限により) 後で呼び出されると、このような高速リアルタイム カウンターを作成できます。

Memcache は非常に高速 (低速のマシンで 1 秒あたり 200,000 以上のリクエスト) のメモリ キャッシュ ソリューションですが、永続的なストレージではありません。カウントされた数値を保存するための別のソリューションが必要になります。

これは、独自の関数でリクエストの先頭に追加された、そのようなタスクに対する私のソリューションです。

$m = new Memcache;
$m->addServer('localhost', 11211);

$cacheKey = "performance_".gmmktime();

// Add in case it doesn't exist, no compression, 1 hour timeout
$m->add($cacheKey, (int) 0, false, (60*60));
// Increment cache
$m->increment($cacheKey, (int) 1);

$cacheKey を変更すると、複数の異なるものをカウントすることもできます。

次に、毎分 cron スクリプトでこの情報を収集し、データベースに追加する別のコードがあります。このソリューションは、実装のニーズに応じて複数のマシンでも機能し、スケーラブルなカウンターの実装を可能にします。

明らかに、これは単純な例にすぎませんが、うまくいけば、その使用法を見ることができます。このコードは、PHP を実行する大規模なマルチサーバー ゲーム サービスで使用されています。

于 2011-10-31T13:21:53.270 に答える