我正在写一个随机倒计时,显示促销中剩下的产品数量与计时器一起。剩下的产品数量存储在数据库中,因此所有用户都看到相同的数字。我使用简单的php / ajax / javascript解决方案。我的问题在于分发随机销售,所以所有这些都适合有限的计时器并且分布很好。
这是我到目前为止的代码:
function start() {
$date= new DateTime();
$prod_left = getval("SELECT * FROM counter LIMIT 1");
if ( $prod_left == 20 ) {
$fp = fopen("../index.html", "r+");
while($buf = fgets($fp)){
if(preg_match("/<!--(.|\s)*?-->/", $buf)){
fputs($fp, '<script type="text/javascript">$(document).ready(function() {$(".countdown").circularCountdown({startDate:"' . $date->format('Y/m/d H:i:s') . '",endDate:"' . $date->modify("+5minutes")->format('Y/m/d H:i:s') . '",timeZone:+2});});</script></body></html>');
}
}
fclose($fp);
sleep(30);
while ($prod_left > 0) {
if (rand(0,4) > 2) {
$prod_left--;
sleep(rand(1,13));
updateval($prod_left);
}
}
} else {
echo 'Promocja w trakcie lub zakończona, zresetuj zegar, jeżeli chcesz rozpocząć ponownie';
}
exit;
}
我的假设是:50%的时间减少计时器并平均等待6.5秒,这平均应该给我260秒的全额销售。不幸的是它的分布非常不均匀。 我的目标是在循环开始后不迟于270秒将$ prod_value降至0,并且分布均匀的值会减少(可以加速结束)你能帮忙吗?
实现不需要使用任何特定的编程语言,我只是寻找一条线索/概念,我可以遵循以实现这一点。
最奇怪的是,$ prod_left值并不总是为0,在sime迭代中它只是3或5。
请帮忙!