Bonjour,
Je réalise actuellement un script php incorporé dans une page d'une application intranet. Le but du programme est de transférer des données d'une table d'une BDD vers une autre table de la même BDD (postgresql).
En fait les données dans la table d'origine sont stockées sous forme de colonnes : il y a 200 colonnes de noms de données (a1, a2, ..., a200) et chaque ligne stocke les valeurs de ces 200 données sur différentes années, territoires etc...
Bref une table type possède environ 150 à 200 colonnes et 30 000 lignes. Comme ce genre de table n'est pas bien conçue, je fais un script récupérant les noms de colonnes, les valeurs pour chaque lignes, l'année, le territoire etc... j'effectue des vérifications dessus (requête select pour savoir si le territoire existe déjà dans la BDD ou si il faut le créer, idem est ce que la donnée existe déjà ou est-ce qu'il faut la créer) et je déplace toutes ces informations dans des tables mieux conçues.
Le "problème" c'est que l’exécution du script est un peu long (~10 minutes pour 130 colonnes et 30 000 lignes) et il m'oblige à passer la memory_limit de php à 512M.
J'ai essayé d'optimiser au maximum mais là je ne trouve plus rien (peut-être que mon algo est mauvais, ou alors c'est simplement normal vu le nombre de données et toutes les requêtes SQL à faire)
- Je voulais donc tout d'abord savoir : est-ce que mettre la memory_limit à 512M peut être dangereux pour le serveur ?
- De plus en regardant les astuces pour optimiser son code php, certains parlaient d'outils permettant d'accélérer le code php avec des systèmes de cache (APC,memcache, eAccelerator..). Est-ce que l'un d'eux peut-être utile dans mon cas ? Est-ce que ça peut accélérer mon script sachant que c'est seulement pour lui que je l'installe étant donnée que mon site n'affiche pas les pages avec du php ?
Merci d'avance
Partager