2016-12-30 2 views
0

kartik-v/export와 함께 사용되는 쿼리를 사용하여 모든 결과를 내보내고 많은 양의 결과를 반환하고 서버의 메모리가 부족해집니다.ActiveDataProvider에 대한 Yii2 배치 쿼리

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

어떻게 적절하게 배치 쿼리에이 설정을 수행합니다

여기에 예제 쿼리입니까? 아니면 메모리 누수를 방지하는 또 다른 방법이 있습니까?

+0

을 시도 할 수 - 당신은이 경우 메모리 부족입니까? 또는 당신이 제공 한 예제가 너무 단순하여 사용중인 쿼리와 거의 유사하지 않을 수 있습니다. – Bizley

+0

@bizley 나는 더 분명해야했습니다. activeDataProvider의 모든 결과는 Excel 파일로 내보내집니다. 기본적으로 사용자는 모든 결과를 내보낼 수 있습니다. – Dean

+0

데모보기 http://demos.krajee.com/export-demo-dtl/large-files-link 거기에는 큰 파일 및 메모리 문제에 대한 옵션 설정이 있습니다. – Bizley

답변

0

당신은 당신이 결과를 페이징 제공 데이터 공급자를 사용하여 배치 쿼리 http://www.yiiframework.com/doc-2.0/guide-db-active-record.html

// fetch 10 customers at a time 
    foreach (Customer::find()->batch(10) as $customers) { 
    // $customers is an array of 10 or fewer Customer objects 
} 
+0

kartik 내보내기 플러그인을 사용하여 결과를 CSV로 내보내므로 ActiveDataProvider를 사용해야합니다. – Dean