PHP JAVA Fichier CSV

easynoob Messages postés 19 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 14 septembre 2011 - 12 mars 2010 à 09:33
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 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 ?

Merci bien.

7 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
12 mars 2010 à 10:53
Alors je ne peux pas répondre à ta question, mais pourquoi ne pas les insérer directement par un script et la commande MySQL ?
S.
0
easynoob Messages postés 19 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 14 septembre 2011 1
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)
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
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.
0
easynoob Messages postés 19 Date d'inscription dimanche 14 janvier 2007 Statut Membre Dernière intervention 14 septembre 2011 1
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).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
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, ...


Cordialement,


Kohntark -
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
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

Cordialement,

Kohntark -
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
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.
0
Rejoignez-nous