Maison > développement back-end > tutoriel php > Parlons de la façon d'écrire des millions de données en CSV en PHP

Parlons de la façon d'écrire des millions de données en CSV en PHP

藏色散人
Libérer: 2023-04-11 09:36:01
avant
4523 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur PHP+csv. Il présente principalement comment écrire des millions de données en CSV via des fichiers de script en PHP. Voyons comment y parvenir. J'espère que cela sera utile à tout le monde.

Parlons de la façon d'écrire des millions de données en CSV en PHP

Exigences :

Des millions de données écrites au format CSV.

Framework :

N L'ancien framework d'il y a de nombreuses années n'est plus disponible sur Baidu, donc la méthode d'écriture est plus proche de l'original

Analyse :

La quantité de données est trop importante et le Le navigateur ne peut pas être utilisé pour demander l'écriture sur le téléchargement CSV, alors écrivez un script qui appelle

pseudo-code :

//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 = '';//初始化
}
Copier après la connexion

consiste essentiellement à écrire par lots. Lorsque j'ai commencé les tests, j'avais prévu de ne pas écrire file_put_contents dans la boucle. a constaté que lorsque la quantité de données était importante, des centaines de milliers de données dépassent la mémoire de $data. De plus, si les données dépassent un million, vous devez les exporter dans des fichiers séparés. Excel ne prend pas en charge l'ouverture de plus de 1048576 lignes. . Théoriquement, vous pouvez ajouter un paramètre $all_count pour compter le nombre total de requêtes en cours. S'il dépasse un million, ajoutez de nouveaux fichiers.

S'il existe une meilleure méthode ou une meilleure optimisation du code, veuillez en discuter.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal