PHP JAVA Fichier CSV

Signaler
Messages postés
19
Date d'inscription
dimanche 14 janvier 2007
Statut
Membre
Dernière intervention
14 septembre 2011
-
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
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

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
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.
Messages postés
19
Date d'inscription
dimanche 14 janvier 2007
Statut
Membre
Dernière intervention
14 septembre 2011
1
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)
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
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.
Messages postés
19
Date d'inscription
dimanche 14 janvier 2007
Statut
Membre
Dernière intervention
14 septembre 2011
1
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).
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
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.