Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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实现数组中的批处理_Php_Arrays - Fatal编程技术网

用PHP实现数组中的批处理

用PHP实现数组中的批处理,php,arrays,Php,Arrays,我在从xml解析的数组中获得了数千个数据。。我关心的是我的脚本的处理时间,它是否会影响我的脚本的处理时间,因为我有十万条记录要插入到数据库中?有没有一种方法可以批量处理向数据库中插入的数据?这不太可能影响处理时间,但您需要确保数据库的事务日志足够大,可以为100k行构建回滚段。语法是: INSERT INTO tablename (fld1, fld2) VALUES (val1, val2), (val3, val4)... ; 所以你可以写smth。像这样(虚拟示例): 这在大型数据集上运

我在从xml解析的数组中获得了数千个数据。。我关心的是我的脚本的处理时间,它是否会影响我的脚本的处理时间,因为我有十万条记录要插入到数据库中?有没有一种方法可以批量处理向数据库中插入的数据?

这不太可能影响处理时间,但您需要确保数据库的事务日志足够大,可以为100k行构建回滚段。

语法是:

INSERT INTO tablename (fld1, fld2) VALUES (val1, val2), (val3, val4)... ;
所以你可以写smth。像这样(虚拟示例):


这在大型数据集上运行非常快,如果数据集适合内存,则不必担心性能。

这是针对SQL文件的,但您可以遵循它的模型(如果不只是使用它的话)——

它将文件拆分为您可以指定的部分,例如3000行,然后以<1秒到1分钟或更长的时间间隔插入它们

这样,一个大文件就会被分解成更小的插入文件等

这将有助于绕过编辑php服务器配置和担心内存限制等问题,如脚本执行时间等

新用户无法插入链接,因此谷歌搜索“sql大转储”,或者如果这样做有效,转到: www[dot]ozerov[dot]de[slash]bigdump[dot]php

因此,从理论上讲,您甚至可以修改上述脚本,以接受数组作为数据源,而不是SQl文件。这显然需要一些修改

希望能有帮助。 -R

或使用ADOdb包装器():


你想过数组块吗?它在另一个项目中对我有效

谢谢大家的建议!我真的很感激,我会尝试做一个与大转储相同的代码概念,或者只是修改它。。再次感谢!
foreach ($data AS $key=>$value)
{
    $data[$key] = "($value[0], $value[1])";
}
$query = "INSERT INTO tablename (fld1, fld2) VALUES ".implode(',', $data);
// assuming you have your data in a form like this:
$params = array(
             array("key1","val1"),
             array("key2","val2"),
             array("key3","val3"),
             // etc...
          );
// you can do this:
$sql = "INSERT INTO `tablename` (`key`,`val`) VALUES ( ?, ? )";
$db->Execute( $sql, $params );