//平常读取excel,一般使用phpexcel,但是碰到超大excel文件就很容易造成内存不足,无法加载。这时候可以使用yield生成器来帮忙。
//我的做法是:1.现将excel文件转换成csv文件
// 2.通过yield生成器逐行读取代码,然后插入到数据库中
```
function read_file()
{
$filename = "a.csv";
$handle = fopen($filename, 'r');
//只要没结束,就一直轮训返回
while(!feof($handle))
{
//第二个参数,读取长度,默认为1024
yield fgetcsv($handle);
}
fclose($handle);
}
function insert_db($arr)
{
$sql = 'insert into tb (field1,field2,field3) values ({$arr[0]},{$arr[1]},{$arr[2]})';
Db::execute($sql);
}
$lines = read_file();
foreach($lines as $k=>$line)
{
//插入到数据库
insert_db($line);
}
```