参考官方文档在同步大量数据或者清洗大流量数据场景下可以使用的方法chunk方法和cursor方法
本地测试chunk可以正常使用,但是相对于游标的介绍
感觉游标才是首选,于是用了一张20万数量的表测试,结果直接内存溢出,参考其它资料整理使用方案如下
后期使用发现这个玩意不好使,数据量大还是会出现溢出、、、、、还是老实用分块或者生成器吧
使用DB类
public function byCursor($con,$table)
{
$i = 0;
$pdo = $con->getPdo();
$pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
foreach($con->table($table)->cursor() as $fetch){
$i++;
}
echo $i;
}
使用模型
public function byCursorFromModel($model)
{
$i = 0;
$pdo = $model->getConnection()->getPdo();
$pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUF