이 기사는 PHP+csv에 대한 관련 지식을 제공합니다. 주로 PHP에서 스크립트 파일을 통해 수백만 개의 데이터를 작성하는 방법을 살펴보겠습니다.
요구 사항:
수백만 개의 데이터가 csv에 기록되었습니다.
프레임워크:
N 수년 전의 오래된 프레임워크는 바이두에서 더 이상 찾을 수 없으므로 작성 방법이 원본에 더 가깝습니다.
분석:
데이터의 양이 너무 많고, 브라우저는 csv 다운로드에 쓰기를 요청하는 데 사용할 수 없으므로 스크립트 호출
의사 코드:
//xxx - 根据自己项目替换 //调取脚本文件 exec(xxx); //脚本文件 //设置执行时间和内存 set_time_limit(0); ini_set('memory_limit', '128M'); //循环获取 $id = 0; $data = 'xxx'.'\n';//表头 while(true){ //SQL $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表, if(empty($list)){ break; } foreach($list as $row){ $data .= '"' . $row['xxx'] . '",'; $data .= "\n"; $id = $row['id'];//更新最大id } //追加写入csv file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND); unset($data);//基础不好不确定初始化能不能清内存就先unset了 $data = '';//初始化 }
는 본질적으로 일괄 쓰기입니다. 처음 테스트를 시작할 때 나중에 루프에 file_put_contents를 쓰지 않을 계획이었습니다. 데이터 양이 많을 경우 $data의 메모리가 수십만 개를 초과하는 것으로 나타났습니다. 또한 데이터가 100만 개를 초과하는 경우 별도의 파일로 내보내야 합니다. Excel에서는 1048576행 이상 열기를 지원하지 않습니다. 이론적으로는 $all_count 매개변수를 추가하여 현재 쿼리의 총 개수를 계산할 수 있습니다. 1백만 개를 초과하면 새 파일을 추가하세요.
더 나은 방법이나 코드 최적화가 있다면 토론해 주세요.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 수백만 개의 데이터를 CSV로 작성하는 방법에 대해 이야기합시다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!