我有一个SQL指令'TRUNCATE和INSERT'的数组,该程序集是从txt文件检索的。
过程truncate和insert在6个表上进行,问题是其中一个表将接收110,000条记录。
我做了一些测试:
http://pastebin.com/egbnbfVa1日
短语…错误:MySQL server has gone away
错误编号2006…
second http://pastebin.com/tfF7ZaVd
This…500错误
我认为你的脚本太长了,无法执行。如果无法优化脚本,请检查PHP日志并更改execution_time
思考如下代码:
<?php
$configuration = array(
'mysql-user' => 'username',
'mysql-password' => 'password',
'mysql-host' => '127.0.0.1',
'mysql-database' => 'database',
);
$mysqli = mysqli_connect($configuration["mysql-host"], $configuration["mysql-user"], $configuration["mysql-password"], $configuration["mysql-database"]) or die("Error " . mysqli_error($link));
$mysqli->set_charset("utf8");
在你的第二个代码中你有一个错误
错误:for($i=0;i<count($sql_prod_s_saida_inARR);$i++)
正确的:
for( $i = 0; $i < count($sql_prod_s_saida_inARR); $i++ )
有一个建议,如果你有110k的记录,把它分成部分,例如每次10k。
您可以在脚本中设置时间限制。你可以这样设置它为unlimited:
set_time_limit ( 0 )
主要原因是每次插入后表都会重新索引。如果我是对的,你可以用交易来停止这个,这将使你的速度提高100倍以上:D