有时候我们向数据库中添加记录时会遇到大批数据假如的情况,如果用insert和循环一次向数据库中写入来操作的话这样会

增加数据库连接次数严重影响数据库操作性能,tp5中有提供insertAll批量写入数据的方法可以依次写入大量的数据减少连接

次数,然而当数据量达到几万和几十万的时候insertAll方法写入数据会出现超时和sql过长的报错,超时是因为一次处理的数

据量过大内存处理不过来,sql过长是因为sql语句有限定最大长度超过后就会报错。

这里我们可以将数据分几次循环分批导入,用array_slice将数据分批次导入

PHP用array_slice函数处理mysql批量添加处理

注意:当用array_slice函数切分数据是一定要注意函数最后一个参数一定要为false部分insertAll导入在第二批数据以后会写入

失败,因为从第二批数据后key值不是从0自增的,tp5手册上也没有这方面的讲解

//保留原键值

$a = array_slice($arr,4,10,ture);

print_r($a);

结果输出如下:

Array(    [4] => 5    [5] => 6    [6] => 7    [7] => 8    [8] => 9    [9] => fhksadhfj    [10] => 19)

//重置键值

$a = array_slice($arr,4,10,false);

print_r($a);

结果输出如下:

Array(    [0] => 5    [1] => 6    [2] => 7    [3] => 8    [4] => 9    [5] => fhksadhfj    [6] => 19)

 

相关文章:

  • 2021-12-01
  • 2021-08-09
  • 2021-12-13
  • 2021-06-02
  • 2021-07-03
  • 2021-09-14
  • 2021-12-01
  • 2021-07-08
猜你喜欢
  • 2021-10-26
  • 2021-09-27
  • 2021-04-03
  • 2021-12-10
  • 2021-11-23
  • 2021-04-16
  • 2021-08-28
相关资源
相似解决方案