> 백엔드 개발 > PHP 문제 > PHP에서 수백만 개의 데이터를 CSV로 빠르게 내보내는 방법

PHP에서 수백만 개의 데이터를 CSV로 빠르게 내보내는 방법

醉折花枝作酒筹
풀어 주다: 2023-03-10 22:42:02
앞으로
3040명이 탐색했습니다.

PHP에서는 서버의 캐시를 사용하여 수백만 개의 데이터가 포함된 CSV를 빠르게 내보낼 수 있습니다. 오늘은 CSV를 빠르게 내보내는 방법을 알려드리겠습니다. 필요하시면 참고하시면 됩니다.

PHP에서 수백만 개의 데이터를 CSV로 빠르게 내보내는 방법

php는 이를 달성하기 위해 서버의 캐시를 사용합니다.

1: 테스트 테이블 만들기 및 테스트 데이터 추가

1: 테스트 테이블 만들기

여기서 만들었습니다. 테스트 테이블의 필드는 다음과 같습니다. id, name, age, email

2: 테스트 데이터 추가

(1) 먼저 테이블에 여러 행의 데이터를 수동으로 추가합니다

그런 다음 다음 명령을 실행하여 일괄적으로 데이터를 추가합니다

INSERT INTO test (name,age,email) SELECT name,age,email FROM test;
로그인 후 복사

여러 번 실행 위 명령의 테스트 데이터가 기하급수적으로 늘어나므로 많은 테스트 데이터를 얻을 수 있습니다

둘: PHP는 수백만 개의 데이터 내보내기를 구현합니다. (여기서 내 쿼리 명령은 Yii 프레임워크와 함께 제공되는 쿼리 명령입니다.)

//让程序一直运行
set_time_limit(0);
//设置程序运行内存
ini_set('memory_limit', '128M');
//导出文件名
$fileName = '测试导出数据';
header('Content-Encoding: UTF-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
//打开php标准输出流
$fp = fopen('php://output', 'a');
//添加BOM头,以UTF8编码导出CSV文件,如果文件头未添加BOM头,打开会出现乱码。
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
//添加导出标题
fputcsv($fp, ['姓名', '岁数', '邮箱']);
$nums = 10000; //每次导出数量
$count = Test::find()->count();
$step = ceil($count/$nums);//循环次数
for($i = 0; $i < $step; $i++) {
    $result = Test::find()
        ->select([&#39;name&#39;, &#39;age&#39;, &#39;email&#39;])
        ->limit($nums)
        ->offset($i * $nums)
        ->asArray()
        ->all();
    foreach ($result as $item) {
        fputcsv($fp, $item);
    }
    //每1万条数据就刷新缓冲区
    ob_flush();
    flush();
}
exit;
로그인 후 복사

위와 같이 테스트해 보면 약 100만 개의 데이터를 내보내는 데 약 10초밖에 걸리지 않는 것을 알 수 있는데, 이는 상당히 효율적입니다

위 내용은 PHP에서 수백만 개의 데이터를 CSV로 빠르게 내보내는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿