但是我不建议你用fork,我建议你安装一个gearman worker.这样你要并发几个,就启几个worker,写代码简单,根本不用在代码里考虑thread啊,process等等.
(1)安装gearman worker.
不知道你明白了没有
require_once(?'./PHPExcel/IOFactory.php');
$filePath?=?'D:/xxx.xlsx';?//excel?文件名?
$objPHPExcel?=?$objReader-load($filePath);
$sheetData?=?$objPHPExcel-getActiveSheet()-toArray(null,true,true,true);
$insql?=?'insert?into?表名(x,x,x)?valeus';
//遍历数组?$sheetData
//如果有标题?先删除?unset($sheetData[1]);
foreach($sheetData?as?$k?=?$data){
$insql?.=?'('.$data['A'].','.$data['B'].','.$data['C'].'),';
//一次插入100条数据?减少数据库压力
if(($k+1?/?100)?==?0){
$insql?=?rtrim($insql,',').';';?//将最后的逗号替换成分好
//插入数据库?并且重置?字符串?$insql?
//或者保存到文件中?利用source?命令插入数据库
}
优化SQL插入语句;
比如循环一条一条插入,改成链接多个值进行插入.
将:
foreach($re as $it){
$sql="insert into table (id,name) values(".$it['id'].","."$it['name'].")";
mysql_query($sql);
改为:
$sql="insert into table (id,name) values";
$str= "'".$it['id']."','".$it['name']."'";
$sql .= "(".$str."),";
打开mysql的配置文件,my.ini文件,并找到:max_allowed_packet项;
将值修改大一点,具体根据自己需要修改.比如这里修改为:1G.
重启mysql服务;
如果运行页面提示内存溢出,可将值设大一点.
步骤阅读
这样,面对千万数据导入的时候,比原来那种方法至少快好多倍.
以上就是土嘎嘎小编为大家整理的php脚本快速导入大数据相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!