php横幅队列fifo

php横幅队列fifo,php,queue,fifo,banner-ads,Php,Queue,Fifo,Banner Ads,我刚开始在我的网站上投放广告,我希望能给广告a 1000次浏览量,给广告b 2000次浏览量,给广告c 10000次浏览量 如果当时只查看了一个页面,那么很容易更新数据库,并计算出每个广告还有多少页面可以查看,但是可以同时访问几个页面,这使得事情变得更加复杂 我正在考虑写一个队列来管理它,请求将在数据库中逐个完成。我不确定这是不是最好的主意,从来没有做过这种编码,我正在寻找一条路线,逻辑步骤,如果有规范,在数据库中创建什么样的表 非常感谢你的帮助 您可以使用Memcached来存储当前的视图计数

我刚开始在我的网站上投放广告,我希望能给广告a 1000次浏览量,给广告b 2000次浏览量,给广告c 10000次浏览量

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

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


非常感谢你的帮助

您可以使用Memcached来存储当前的视图计数。Memcached速度快、重量轻,不会出现性能问题。此外,更复杂的是,如您所说,有一个“队列”,一些并行进程会更新它,在其中放入要显示的横幅,这样您就可以将它们混合起来。

一个页面可能一次被多次查看这一事实不一定是个问题,这就是为什么要这样做

这样,在更新表之前,任何人都无法读取该表。 (这个例子是针对MySQL的,我相信大多数其他RDBMS也支持锁)

兰德怎么样

$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';
$r=rand(1,13);
如果($r==1)
回音“ad_a”;
如果($r>1和$r<4)
回音“ad_b”;
如果($r>3)
回音“ad_c”;

队列确实可以正常工作。当它为空时,根据规则用“要显示的横幅”重新填充。我正在寻找类似的东西,听起来真的很好,我会阅读文档,看看它是如何运行的。Memcached似乎是一个不错的选择,但我完全忘记了表锁,这将更容易实现!我也得去!谢谢你们的帮助!伙计,你可以直接使用交易。但是你会遇到瓶颈。不总是这样,例如,如果你在MyISAM上运行,你就完蛋了。
$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';