Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP/MySQL插入大量数据?_Php_Mysql_Insert_Bulkinsert - Fatal编程技术网

如何使用PHP/MySQL插入大量数据?

如何使用PHP/MySQL插入大量数据?,php,mysql,insert,bulkinsert,Php,Mysql,Insert,Bulkinsert,我目前正在为客户编写一个赌博系统,该系统的工作方式如下: 门票是我们创造的 每张票都会被分配一定数量的号码 总共有1000000个,从000000到999999随机订购 这100万个数字被分成多张票,每张票的数量由管理员定义 现在的问题是,目前我们有一个100万个随机排序的数字数组,这很好,但将其插入数据库的最佳方法是什么 我们有两张桌子 门票 身份证 票证 prizeID 添加 票号 身份证 ticketID 数 当用户决定将门票添加到奖品时,我们循环并创建总门票,总门票由每张门票

我目前正在为客户编写一个赌博系统,该系统的工作方式如下:

  • 门票是我们创造的
  • 每张票都会被分配一定数量的号码
  • 总共有1000000个,从000000到999999随机订购
  • 这100万个数字被分成多张票,每张票的数量由管理员定义
现在的问题是,目前我们有一个100万个随机排序的数字数组,这很好,但将其插入数据库的最佳方法是什么

我们有两张桌子

门票

  • 身份证
  • 票证
  • prizeID
  • 添加
票号

  • 身份证
  • ticketID
当用户决定将门票添加到奖品时,我们循环并创建总门票,总门票由每张门票的总数量决定,例如每张门票1张=100万张门票,等等

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

现在问题的根源是,这样做会占用大量内存,并导致页面超时

有没有其他方法可以帮助克服这个问题

另外,我不能提供源代码,但这基本上就是我们正在做的,我真正需要的是其他方法的理论,我可以如何处理所有这些数据的插入


提前谢谢

我不是真的喜欢赌博,所以我不确定这些彩票在哪方面与赌博有关


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

如果不尝试一下,我现在想不出最好的解决方案-您真的必须首先将数字保存在数据库中吗?如果它的普通数字从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); 

您的插件现在看起来像什么?必要时要模糊,但看看你现在是怎么做的是很有用的<代码>插入TickerNumbers(ID,TickedId)值(“$tid”、$currnum),($tid’、$currnum),($tid’、$currnum),(…)似乎效率不高。您好,是的,这就是为什么我需要建议,因为它似乎效率很低,但不确定如何插入如此大量的数据,我们基本上循环并创建了上述数量的票,然后循环每个票中需要插入的数量,这意味着如果每个票有一个数字,我们将插入100万张票,然后插入一百万个数字…如果你或多或少在做几十万个单独的查询,或者在一个循环中,在PHP中。。。你认为效率低下发生在哪里?我假设我们实际添加它的方式,事实上它直接从表单中运行,正如下面这位先生所提到的,一个好的方法是将它拆分为一个单独的线程,所以这就是我将要做的。当然,你可以设置一个cron并将它卸载到其他地方。您必须小心不要假设它立即可用(而且PHP不是多线程的)。我最初的想法是写一个文件,然后再处理这个文件,但是首先,你需要知道瓶颈在哪里。如果您在循环,循环,循环,并且仍然单独插入了几十万个查询,那么您怎么会认为您不会在其他地方运行的脚本上遇到超时?你需要知道真正的问题是什么,而不仅仅是把它转移到别处。也要记录任何输出。谢谢这真的很有帮助,它是PHP,这里的彩票是由管理员创建的,用户然后购买彩票,奖金作为彩票发放。