场景:商家生成 1W 条以上的优惠券,随机生成的优惠券写入数据库,也就是 1W 多条。 按平常的写法我们肯定是这样写的:

for ($i=0; $i <10000 ; $i++) { 
	SQL 语句
	执行写入数据库操作
}

但是这样效率太低,如果是 1W 条数据库就需要操作 1W 次数据库,这个成本是很大的,一般情况下,这样就是报错的,说需要执行的时间太长了。 解决办法就是,把上面代码改成如下:

for ($i=0; $i <10000 ; $i++) { 
	SQL 语句
}
执行写入数据库操作

这样只需要执行一次写入数据库操作就行了,效率立刻体现出来了。 CakePHP 自带有一个方法是 saveAll 就是用来做这件事的,使用方法如下:

for ($i=0; $i <10000 ; $i++) { 
	$data[] = array('字段名' => '值'),array('字段名' => '值');
}
$this->ModelData->saveAll($data);

  参考链接:PHP 技巧:写入大量数据到 mysql