Traitement de données

Import de 40 000 lignes,
sans timeout, sans intervention manuelle.

Exemple de mission type : scénario fondé sur des situations réelles, aucun client fictif.

Ce qui a été
envoyé.

Contexte Agence gérant un portail immobilier régional avec plusieurs milliers de biens à importer depuis un fichier d'export partenaire chaque semaine
Stack WordPress avec custom post types, hébergement mutualisé à limite PHP de 30 secondes
Contrainte L'import devait tourner sans intervention depuis l'admin WordPress. Pas de ligne de commande accessible. Pas d'accès SSH.
Format Brief par email + accès staging + exemple de fichier CSV de 1 200 lignes fourni pour tests
Brief entrant Mission one-shot

"On reçoit chaque semaine un fichier CSV de notre partenaire avec les nouvelles annonces à intégrer. Jusqu'ici on le faisait à la main, fiche par fiche. Maintenant le fichier dépasse 40 000 lignes et ça plante systématiquement à mi-chemin. On voudrait un outil dans l'admin pour uploader le CSV, voir la progression en temps réel et récupérer un rapport avec les lignes qui ont posé problème. Sans passer par le terminal, sans plugin d'import générique, quelque chose taillé pour notre structure de données."

Les doublons doivent être détectés et mis à jour, pas créés en double Un rapport téléchargeable doit lister les lignes en erreur avec la raison de l'échec L'import peut être interrompu et repris sans repartir de zéro

Ce qui a été
développé.

Quatre étapes, du premier audit à la livraison staging. La contrainte centrale : contourner la limite de 30 secondes du serveur sans accès SSH, en traitant le fichier par petits lots successifs depuis le navigateur.

01
Audit

Analyse de la structure de données et des limites serveur

Cartographie des champs du CSV partenaire, correspondance avec les custom post types et métadonnées WordPress existants. Identification des clés de déduplication et mesure des limites de mémoire et de temps d'exécution sur le serveur mutualisé.

Limite PHP : 30s, mémoire : 128Mo. Taille de lot retenu : 250 lignes par requête, compatible avec les deux contraintes sur les fichiers les plus chargés.

02
Moteur batch

Traitement par lots avec reprise sur interruption

Le fichier est découpé côté serveur au moment de l'upload. Chaque lot est traité via une requête AJAX indépendante, avec un curseur de progression stocké en base. Si la page est fermée puis rouverte, l'import reprend au lot suivant sans repartir de la ligne 1.

Curseur stocké en option WordPress. Chaque lot : lecture, déduplication par clé externe, insertion ou mise à jour via wp_insert_post conditionnel.

03
Interface admin

Page d'import avec progression en temps réel et rapport d'erreurs

Une page dédiée dans l'administration WordPress permet d'uploader le fichier, de suivre la progression lot par lot et de consulter les lignes en erreur au fur et à mesure. En fin d'import, un fichier CSV d'erreurs est proposé en téléchargement.

Barre de progression mise à jour via polling AJAX toutes les 2 secondes. Erreurs écrites dans une table temporaire, exportées en CSV natif PHP en fin de traitement.

04
QA staging

Recette sur fichier réel avant mise en production

Tests avec le fichier de 40 000 lignes fourni par le client : import complet, interruption volontaire et reprise, lignes malformées volontairement introduites, doublons intentionnels. Chaque scénario documenté dans la note de livraison.

Durée import complet sur staging : 18 minutes. Zéro timeout. 312 doublons détectés et mis à jour. 7 lignes en erreur correctement isolées dans le rapport.

Ce qui a été
livré.

Tout le nécessaire pour passer en prod sans question. Le code, les tests et la documentation pour que l'équipe reprenne sans avoir à revenir vers moi.

  • 1 plugin WordPress autonome
    Moteur batch, interface admin et générateur de rapport regroupés dans un plugin activable. Modifier la taille des lots ou la clé de déduplication : deux constantes en haut du fichier.
  • Script de mapping champs CSV vers WordPress
    Tableau de correspondance isolé, documenté. Ajouter un champ au CSV partenaire : une ligne dans le tableau, sans toucher à la logique d'import.
  • Note technique de livraison
    Architecture du moteur batch, logique de déduplication, format attendu du CSV, cas d'erreur couverts et instructions pour adapter la taille des lots à un autre hébergement.
  • Checklist mise en prod
    4 étapes ordonnées : activer le plugin, lancer un import test sur 500 lignes, vérifier le rapport d'erreurs, confirmer la déduplication sur une fiche existante avant import complet.

40 000 lignes importées.
Zéro timeout.
Zéro doublon créé.

Le moteur batch tourne en production chaque semaine depuis le déploiement. L'agence gère les imports sans intervention technique. Les doublons sont détectés et mis à jour automatiquement. Le rapport d'erreurs permet à l'équipe de corriger les lignes problématiques sans avoir à passer par un développeur.

5j
Du brief au staging validé. Brief reçu lundi, staging livré avec recette complète sur le fichier de 40 000 lignes vendredi.
0
Timeout depuis la mise en prod. Le découpage en lots de 250 lignes tient dans la limite serveur sur tous les fichiers reçus jusqu'ici.
0
Doublon créé en production. La déduplication par clé externe a couvert 100% des cas sur les fichiers hebdomadaires.

Un brief, un projet en retard, un parc qui déborde ?

Deux façons de démarrer, selon ce qui vous convient le mieux.

Réponse sous 24h · Sans engagement · 100% sous votre marque

Réserver un appel de 15 min

On cadre votre besoin, je reviens avec une estimation. Sans engagement.

Choisir un créneau
Envoyer un message direct

Un brief en quelques lignes suffit. Je réponds sous 24h ouvrées.

Ecrire sur WhatsApp