ActiveDataProvider的Yii2批处理查询

ActiveDataProvider的Yii2批处理查询,yii,yii2,yii2-advanced-app,Yii,Yii2,Yii2 Advanced App,我有一个与kartik-v/export一起使用的查询,用于将所有结果导出到excel,返回大量结果并导致服务器内存不足 下面是一个查询示例: $query = Customer::find()->where('status'=>1); $activeDataProvider = new ActiveDataProvider(['query'=>$query]) ; return $activeDataProvider; 如何正确地将其转换为批处理查询?还是有其他方法可以防止

我有一个与kartik-v/export一起使用的查询,用于将所有结果导出到excel,返回大量结果并导致服务器内存不足

下面是一个查询示例:

$query = Customer::find()->where('status'=>1);
$activeDataProvider = new ActiveDataProvider(['query'=>$query]) ;
return $activeDataProvider;

如何正确地将其转换为批处理查询?还是有其他方法可以防止内存泄漏

您可以尝试批处理查询


使用数据提供程序可获得分页结果-在这种情况下,内存是否已用完?或者你给出的例子过于简化,甚至与你使用的查询不太接近?@bizley我应该更清楚一点。activeDataProvider的所有结果都将导出到excel文件。用户基本上可以导出其所有结果。请参阅此演示,其中有一个选项设置用于解决大文件和内存问题。@Bizley在生成CSV时禁用流仍然会导致以下错误:PHP致命错误:允许的内存大小为134217728字节(尝试分配20480字节)您必须增加PHP内存限制,或者为此导出实现其他解决方案。我需要使用ActiveDataProvider,因为我正在使用kartik导出插件将结果导出到csv
  // fetch 10 customers at a time
  foreach (Customer::find()->batch(10) as $customers) {
    // $customers is an array of 10 or fewer Customer objects
 }