1

我刚开始在我的网站上投放广告,我希望能够为 ad_a 提供 1000 次查看,为 ad_b 提供 2000 次查看,并为 ad_c 提供 10000 次查看。

如果当时只查看一个页面,那么更新数据库并计算出每个广告还剩下多少要查看将很容易,但是可以同时访问多个页面,这会使事情变得更加复杂。

我正在考虑编写一个队列来管理它,请求将在数据库上一一完成。我不确定这是否是最好的主意,从来没有做过这种编码,我正在寻找一种行为方式,逻辑步骤,如果有规范,在数据库中创建什么样的表。

非常感谢您的帮助!

4

3 回答 3

0

兰特呢?

$r = rand(1, 13);
if ( $r == 1 )
    echo 'ad_a';
if ( $r > 1 and $r < 4 )
    echo 'ad_b';
if ( $r > 3 )
    echo 'ad_c';
于 2013-09-18T20:30:24.687 回答
0

您可以使用 Memcached 来存储当前的视图计数。Memcached 又快又轻,不会有性能问题。此外,正如您所说,更复杂的事情是有一个“队列”,并且一些并行进程会更新它,将要显示的横幅放在那里,这样您就可以将它们混合起来。

于 2011-09-08T13:12:38.930 回答
0

一个页面可以一次被多次查看这一事实并不一定是个问题,这就是LOCK TABLES的用途。

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 回答