easynoob
Messages postés19Date d'inscriptiondimanche 14 janvier 2007StatutMembreDernière intervention14 septembre 2011
-
12 mars 2010 à 09:33
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 2012
-
13 mars 2010 à 10:49
Bonjour à tous,
Je dois développer un site internet de statistique. Mon problème réside dans le fait que je doit faire un traitement toutes les nuits. Ce traitement est :
Je reçois 1300 fichiers txt au format CSV. Je doit ensuite les lire et les inséré dans une base de données. Ce traitement est très long.
J'aurai voulu savoir s'il le traitement des fichiers était plus rapide en PHP ou en JAVA. Le temps d'accès à la base de données et le temps d'accès au fichiers est il plus rapide en JAVA ou en PHP ?
easynoob
Messages postés19Date d'inscriptiondimanche 14 janvier 2007StatutMembreDernière intervention14 septembre 20111 12 mars 2010 à 14:50
Oui je fait cela pour le moment. Mais le souci, c'est le temps d'exécution du script. J'ai à peut prés toute les nuits, 1 000 000 d'enregistrement...
Et ensuite je doit mettre à jour 3 tables de ma base de données. C'est pour ca que je cherche par tout les moyens possible de réduire ce temps...
Pour info le script php que j'ai fait met 1h en moyenne (le temps de parcourir les fichiers, d'écrire un fichier log et d'inséré dans la base de données aprés avoir vérifier si l'enregistrement n'existait pas auparavant)
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 12 mars 2010 à 15:41
Pour la mise à jour, reste alors en 100% MySQL en lançant une procédure stockée.. Pas de PHP, pas de Java inutile de rajouter une surcouche logicielle.
S.
easynoob
Messages postés19Date d'inscriptiondimanche 14 janvier 2007StatutMembreDernière intervention14 septembre 20111 12 mars 2010 à 16:39
Effectivement je n'y avais pas pensé... je pense que c'est une trés trés bonne idée...
Merci
Donc pour la mise a jour de la base je garde ton idée de la procédure stockée.
Me reste juste à bien optimisé mon code php pour l'insertion dans la base de données. J'espere gagné quelque seconde par fichier :p.
Si quelqu'un à une idée pour gagnée du temps dans ce processus d'insertion, à parti de fichier txt (CSV) grâce à un script php, des lignes dans une base de données SQL (ici SQL Server).
Vous n’avez pas trouvé la réponse que vous recherchez ?
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 12 mars 2010 à 19:38
Salut,
En procédant comme Syndrael le propose le temps passé par le script php est négligeable, c'est le serveur mySQL qui fait tout le boulot.
Par contre je n'ai pas bien compris l'utilisation d'une procédure stockée.
Perso je voyais plutôt un LOAD DATA INFILE que le script php passerait en 1 ligne, sans analyse de doublons (à faire dans la requête SQL), sans logs.
Je ne serai pas surpris que ça soit au moins 50 fois plus rapide.
Même en procédant ainsi il doit y avoir moyen d'optimiser, peut être à l'aide de FLUSH et de verrous, ...
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 12 mars 2010 à 19:44
Arf, en relisant je viens de voir '(ici SQL Server)'
De mémoire l'équivalent à ce que je proposais pour mySQL est BULK INSERT FROM ... Je ne suis plus très sur, je te laisse chercher
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 13 mars 2010 à 10:49
La procédure stockée c'était justement pour ôter sa problématique de base: PHP ou Java ?
Sachant que la plus grosse charge sera au niveau MySQL, la procédure stockée élimine le débat.. LOL !!
S.