IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Transfert données d'un fichier text vers Mysql


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Transfert données d'un fichier text vers Mysql
    Bonjour à tous,

    Voici un question sur les règles basic d'accès/lecture/écriture à un fichier.

    Un programme A ecrit un log (pour simplifier) dans un fichier log.txt (entre 10 et 40 fois par seconde).

    Je dois reprend ces données pour les transmettre dans une base de donnée (Mysql par exemple) en quasi temps réel.

    J'utilise donc un script PHP (car il a été simple de le faire ainsi) pour, toute les 5 ms qui
    1) accès au fichier log.txt
    2) lire et copier les données dans la base de données
    3) supprimer les données du fichier log.txt

    Ma question:
    Peut-il avoir un conflit entre le programme qui écrit le fichier log.txt et le script php qui accède à ce fichier log.txt. Est-ce que l'écriture via le script peut empêcher le programme A d'écriture dans le fichier log?

    Merci

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 184
    Par défaut
    oui, car soit ton script met un verrou exclusif sur le fichier .txt empêchant en conséquence A d'écrire dans le log, soit A et ton script font un accès en même temps et ça peut foutre la pagaille.

    5 ms, ça me parait beaucoup quand-même, même pour du temps réel.

    Moi ce que je ferais dans mon script :
    - renommage fichier log.txt en un autre nom (en présument que le système de logging crée automatiquement un fichier vide si absent)
    - analyse et intégration du contenu du fichier renommé dans la base
    - suppression du dit fichier.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Ok je vais tester cette solution. Merci

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Pourquoi passer par un fichier intermédiaire et ne pas écrire directement dans la base ?

    Ceci étant dit pour gérer 30 à 40 logs/s une bdd classique n'est sans doute pas la meilleure option
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Citation Envoyé par grunk Voir le message
    Pourquoi passer par un fichier intermédiaire et ne pas écrire directement dans la base ?
    Uniquement parce que j'utilise un programme tiers qui ne me permets que d'écrire dans un document texte ou vers la sortie STDOUT

    Citation Envoyé par grunk Voir le message
    Ceci étant dit pour gérer 30 à 40 logs/s une bdd classique n'est sans doute pas la meilleure option
    Quel serait une meilleur solution?

    Merci de votre intervention

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    En fait il faudrait savoir dans quelle mesure tu vas consulter les logs et utiliser les avantages d'une base de données.

    Une base mysql est capable d'encaisser 40 insertion/s (selon le server qd même) ce n'est pas vraiment le problème.
    Mais si les logs ne sont jamais ou peu requêter tu ne profite peu ou pas de l'intérêt d'une base de données , et dans le cas des journaux tu ne profite pas du coté relationnelle d'une base comme mysql.

    Une base de données nosql tu type mongodb est sans doute un bon candidat pour la gestion de log

    D'un point de vue performance pure , rien n'ira jamais plus vite que l'écriture dans un fichier.
    Donc si avoir des journaux dans un fichier (comme des jounaux système par exemple) es suffisant pour toi , par sur cette option.
    Tu peux éventuellement centraliser plusieurs source de journaux via un serveur syslog.

    Il existe aussi plein d'outils très poussés , gratuit ou payant pour gérer les logs tel que
    Graylog2
    Logstash
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    A vrai dire, il y aura pour chaque insertion, une recherche pour voir si l'insertion existe déjà (si oui, combien de fois) + des accès de consultation (beaucoup moindre). Donc j'ai besoin d'une base de donnée. A savoir si je prend Mysql, MariaDB ou partir vers du Nosql.

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/10/2012, 20h44
  2. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 17h51
  3. Réponses: 3
    Dernier message: 24/05/2008, 18h56
  4. [MySQL] Problème pour insérer les données d'un fichier texte vers une table Mysql !
    Par BARRIAU76 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/01/2008, 23h24
  5. transfert des données d'un fichier text vers un fichier excel sous VB
    Par insane_80 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/09/2006, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo