2014-11-27 3 views
0

500 만 개가 넘는 행이있는 큰 mongodb 데이터 테이블이 있습니다. 데이터를 CSV로 내보내고 브라우저에서 직접 CSV를 출력하고 싶습니다. PHP를 사용하고 있습니다.PHP의 브라우저에 여러 CSV 파일 출력

작은 레코드 집합을 백만 줄 미만으로 설정하면 다음 코드가 완벽하게 작동합니다.

set_time_limit(0); 
$output = fopen("php://output",'w') or die("Can't open php://output"); 
header("Content-Type:application/csv"); 
header("Content-Disposition:attachment;filename=auditresults_$i.csv"); 
fputcsv($output, array('id','createdon','colum1','column2','column3','colum4'));        
foreach ($items as $item) {    
    fputcsv($output, $item)     
}    
fclose($output) or die("Can't close php://output");  

그러나 5 백만 행과 같은 큰 데이터 세트를 내보낼 때 위의 코드는 실패합니다.

위의 결과를 100,000 행의 배치로 분할하여 브라우저를 통해 여러 개의 csv 파일을 출력하는 방법이 있는지 알고 싶습니다.

+1

각 요청은 하나의 응답 만 제공 할 수 있습니다 (HTML 페이지 1 개, 이미지 1 개, PDF 1 개 또는 CSV 파일 1 개 또는 zip 파일 1 개) –

+0

세미콜론이 누락되었습니다 ('foreach' 루프 내). 또한'$ items'는 어디에서 왔습니까? 그리고 MongoDB는 여기서 어떻게 관련이 있습니까? –

+0

Sverri MongoDB는 PHP를 통해 csv로 데이터를 내보내는 다른 대체 방법이 있는지 찾으려고 여기 언급되었습니다. – FoxShrill

답변

1

요청에 대해 단일 응답 만 보낼 수 있습니다.

해결 방법은 웹 사이트의 임시 폴더에 여러 개의 csv 파일을 출력하고 해당 파일에 다운로드 할 수있는 URL 링크를 응답으로 보낼 수 있습니다.