1

私は自分のウェブサイトに広告を掲載し始めたばかりで、ad_a に 1000 ビュー、ad_b に 2000 ビュー、ad_c に 10000 ビューを提供できるようにしたいと考えています。

一度に 1 つのページのみが表示された場合、DB を更新して各広告の残りの表示数を計算するのは簡単ですが、複数のページに同時にアクセスできるため、事態はさらに複雑になります。

私はそれを管理するためにキューを書くことを考えていました。リクエストはデータベース上で1つずつ行われます。これが最善のアイデアであるかどうかはわかりませんが、この種のコーディングを行ったことは一度もありません。仕様がある場合、データベースにどのようなテーブルを作成するか、論理的な手順、行動方針を探しています。

助けてくれて本当にありがとうございます!

4

3 に答える 3

0

1つのページが一度に何度も表示される可能性があるという事実は、問題である必要はありません。そのため、LOCKTABLESが使用されます。

LOCK TABLES ads WRITE;
SELECT ad_id FROM ads WHERE ad_views_remaining > 0 LIMIT 1;
UPDATE ads SET ad_views_remaining = ad_views_remaining -1 WHERE ad_name = THAT_AD_ID_YOU_SELECTED_BEFORE;
UNLOCK TABLES;

このように、テーブルが更新されるまで、誰もテーブルを読み取ることができません。(この例はMySQL用です。他のほとんどのRDBMSもロックをサポートしていると確信しています)

于 2011-09-08T13:16:28.033 に答える
0

Memcached を使用して、現在のビュー数を保存できます。Memcached は高速で軽量なので、パフォーマンスの問題は発生しません。また、あなたが言うように、より複雑なことは「キュー」を持つことであり、いくつかの並列プロセスがそれを更新して、表示するバナーを配置するため、それらを混同することができます。

于 2011-09-08T13:12:38.930 に答える