2

我目前正在为客户编写赌博系统,有效地,系统的工作方式如下:

  • 门票是我们创造的
  • 每张票将被分配一定数量的每张票
  • 共有 1,000,000 个,从 000,000 到 999,999 随机排序
  • 这 100 万个号码被分成票,每张票的号码数量由管理员定义。

现在的问题是目前我们有一个随机排序的 100 万个数字的数组,这很好,但是将其插入数据库的最佳方法是什么?

我们有两张桌子

门票

  • ID
  • 票证UID
  • 奖品ID
  • 添加日期

票号

  • ID
  • 票号
  • 数字

当用户决定将票添加到奖品中时,我们循环并创建由每张票的总数决定的总票,例如每张票 1 个号码 = 100 万张票,等等......

现在我们循环检查每张票的总数,从我们的数字数组中添加多少,然后从原始数组中删除它,这样就没有重复的数字。

现在问题出在哪里,这会以这种方式占用大量内存,并导致页面超时......

有人可以提出其他方法来帮助解决这个问题吗?

PS我不能提供源代码,但这本质上就是我们正在做的事情,我真正需要的是关于如何处理所有这些数据的插入的其他方法的理论。

提前致谢

4

2 回答 2

1

我不是很喜欢赌博,所以不确定这些票与赌博有什么关系。

也就是说,如果您真的需要创建如此大量的数据,则有几种选择。例如,您可以将票证创建远离用户。我的意思是,每当用户决定“将门票添加到奖品中”时,您将此任务委托给另一个进程/线程并让用户继续前进。然后,当票证的创建完成时,该过程会以某种方式通知用户。

于 2012-07-28T16:56:09.200 回答
1

如果不尝试一些东西,我现在想不出一个最好的解决方案 - 你真的必须首先将数字保存在数据库中吗?如果它的普通数字从 000000 到 999999,那么您可以即时生成它们,这可能会更有效。

为了普遍克服超时问题,您可以随时增加默认 php 超时或完全禁用此特定任务:

//set php script timeout, 0 to disable 
set_time_limit(0); 

// your time consuming code 

//don't forget to reset to 30 seconds. 
set_time_limit(30); 
于 2012-07-28T16:57:16.890 回答