3

Comment lire un fichier CSV volumineux sans saturer la mémoire en PHP ?

AB Adjoua Bamba 133 il y a 2 mois Côte d'Ivoire

J'importe des CSV de 300 000 lignes et j'obtiens « Allowed memory size exhausted ».

Modifiée il y a 1 heure
  • J'ai le même problème depuis hier, je suis cette question de près. · Otieno Odhiambo · il y a 2 mois
  • Pensez à ajouter la configuration de votre serveur, cela aiderait les réponses. · Adama Nikiéma · il y a 2 mois
3
RA Rodrigue Adjovi 212 · il y a 2 mois Réponse acceptée

Pour de très gros fichiers, lancez l'import dans un job en file d'attente avec un suivi de progression, afin que l'utilisateur n'attende pas devant une page figée.

  • Cela fonctionne aussi avec la version précédente ? · Aminata Sow · il y a 2 mois
1
EN Estelle Ngono 336 · il y a 2 mois

Ne chargez jamais le fichier entier. Lisez ligne par ligne avec fgetcsv ou LazyCollection::make et traitez par lots :

LazyCollection::make(function () {
    $f = fopen(storage_path('import.csv'), 'r');
    while (($ligne = fgetcsv($f)) !== false) {
        yield $ligne;
    }
})->chunk(500)->each(fn ($lot) => Client::insert($lot->all()));

Vous connaissez la réponse ? Rejoignez Griot pour aider.

Publier

Poser une question Obtenir de l'aide de la communauté Publier un composant Partager un SDK, un wrapper ou un package Proposer un troc Échanger une heure d'aide contre une autre Créer une prime Récompenser une solution en Mobile Money Organiser un hackathon Lancer un défi pour la communauté
Troc de compétences Primes Hackathons Observatoire