Bonjour,
je rencontre un problème assez casse tête pour traiter un import de données à partir de fichiers via l'application SugarCRM.
En gros j'extrais un fichier CSV que je parcours ligne par ligne : pour chaque ligne, on vérifie en base si cela correspond à un enregistrement connu ou non et on réalise un INSERT ou un UPDATE selon les cas.
Le problème est que la mémoire utilisée par le script ne cesse d'augmenter jusqu'à faire sauter le script, même si je monte jusque 512M (ce qui est déjà un peu énorme à mon avis...)
Détail important, tout ce qui est manipulation des données et accès à la base est fait via le framework Sugar, auquel je dois toucher le moins possible. Et c'est justement les appels à ce framework qui augmentent la mémoire utilisée...
Je me retrouve donc un peu coincé. J'imagine 2 solutions qui doivent bien exister, mais je ne sais pas trop comment m'y prendre :
1. si mon fichier CSV est trop volumineux, il est splitté en fichiers plus petits. Est-il possible de lancer un nouveau script pour chaque fichier ? (un thread ou quelque chose comme ça?)
2. si j'identifie quelles variables sont consommatrices (j'en ai déjà une bonne idée en regardant avec get_memory_usage), ai-je moyen de libérer
explicitement la mémoire? J'ai essayé un simple unset mais ça ne donne rien...
D'avance merci pour votre aide!
Michel
Partager