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 :

Avis au sujet des bases de données et des fichiers texte


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Lycéen
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut Avis au sujet des bases de données et des fichiers texte
    Bonjour les amis (: j'aurais besoin de votre avis au sujet des fichiers texte et des bases de données MySQL

    En fait pour l'instant j'utilise des fichiers texte car je suis en train de développer le site et pour des soucis d'ergonomie je préfère utiliser ce moyen
    Cela fonctionne d'ailleurs très bien au passage,
    J'utilise ses fichiers uniquement pour stocker des valeurs numériques qui s'incrémente avec des script PHP pour par exemple recueillir certaines données analytiques (nombre de vues, de visites, de clicks, etc...)

    Pour l'exemple considérons l'éventualité où je voudrais comptabiliser le nombre d'utilisateurs possédant un compte sur ce même site, j'aimerais savoir, qui de MySQL ou des fichier texte serait le plus adapté.

    Dans la pratique que je compte faire comme cela :

    .a Fichier texte

    .1 J'incremente un fichier texte de +1 à chaque nouvelle inscription
    (au passage j'aurais cette valeur pour le total de comptes créés)

    À partir d'ici deux chemins possibles

    .2a J'incremente un fichier texte de +1 à chaque suppression de compte
    (j'aurais cette valeur pour le total de comptes effacés)

    .3a Une soustraction de ces deux valeurs me donnent le total de comptes "actifs"

    Ou

    .2b Je decrement le fichier texte des inscriptions de -1 à chaque suppression de compte
    (je n'ai donc pas de valeur pour les comptes effacés)

    .3b J'ai en permanance le nombre de comptes, sans avoir à soustraire, j'ai juste à récupérer la valeur

    .b La base MySQL

    .1 Chaque inscription incrémente ma base d'une ligne, cette ligne à donc un id.

    .2 Chaque suppression ajoute dans une colonne, disons pour l'exemple : 1

    .3 Je récupère la valeur ID de la dernière ligne (ou compte le nombre de ligne peu importe)

    .4 Je récupère le nombre de lignes avec la mention "1"

    .5 Une soustraction et j'obtiens le nombre de comptes actifs


    En soi les deux méthodes me donnent le même résultat, et le code est OK, et fonctionne pour les deux façons. Maintenant mes interrogations sont les suivantes et c'est là que j'ai besoin de votre avis car j'ai du mal à peser le pour et le contre...

    - Qui est le plus secure ? Je me dis que si quelqu'un arrive à récupérer ma base, il aura contrairement au fichier texte, toutes les donnés en face du nom de colonne..
    Alors que le fichier texte je peux à la limite le "crypter" avec un nom aléatoire par exemple et personne d'autre que moi ne saura à quoi il correspond.

    Je me demande aussi au niveau de la sécurité est-ce bien correct d'offrir aux potentiels hackers la possibilité d'ouvrir et écrire dans un fichier texte...

    - Qui va le moins "bugger" ?

    Si un nombre important d'utilisateurs s'inscrivent en même temps, ou suppriment en même temps le compte, lequel des deux va le mieux gérer l'ouverture / lecture / écriture

    Et éventuellement si vous avez déjà rencontré d'autres problèmes à ce sujet je suis preneur d'informations.

    Merci pour votre temps les amis

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 618
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 618
    Par défaut
    en stockant des données dans une table MySQL, vous pouvez aussi les chiffrer si vous pensez qu'il y a un risque de sécurité.

    mais le plus gros soucis des fichiers texte est l'accès à un fichier texte par 2 scripts en même temps. si par exemple le fichier contient 3, les 2 scripts vont calculer 3 + 1 et enregistrer le nombre 4 dans le fichier et donc les données ne seront pas cohérentes.
    vous pouvez voir des informations sur cela dans la FAQ MySQL :
    https://mysql.developpez.com/faq/?page=Transactions

  3. #3
    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
    Les fichiers ca va marcher tant que le traffic sur le site est très faible et/ou que tu as peu de données à lire.

    Dans le cas d'un traffic fort , tu risques des accès concurrent sur tes fichiers. Ce qui va se gérer avec des locks qui peuvent devenir problématique si il sont mal libéré.
    Dans le cas d'un volume important de données , plus tu auras de données plus ca va être lent d'aller chercher des informations. Ca peut se mitiger en fractionnant beaucoup les fichiers mais c'est pas l'idéal.
    Si ton site est très dynamique ca va vite devenir chiant de gérer les modification de fichier texte.

    Une base de données gère pour toi toute ces problématique.

    Pour ton exemple d'inscription tu n'as pas besoin d'incrémenter quoi que ce soit , il suffit de compter le nombre de lignes dans la table des inscription pour avoir l'information.

    Pour moi les site à base de fichiers peuvent avoir du sens sur des choses peux dynamique et peu structurée , genre un wiki ou chaque article est un fichier physique. Mais dès que tu as des données très structurée à stocker c'est plus simple de passer par une base.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif
    Profil pro
    Lycéen
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Salut, merci de vos réponses,

    Merci Mathieu, je comprends mieux l'importance des transactions maintenant, merci pour cela ! Et merci pour les infos sur flock() Grunk, mais est-ce nécessaire de vérouiller le fichier avant d'écrire dedant ? Si je le vérouille et qu'un deuxième utilisateur lance le script en même temps, le 2e utilisateur va se trouver avec une erreur car le fichier sera en lecture seule non ?


    Mais sinon, est-ce vraiment nécessaire pour comptabiliser un nombre de visites sur une page donnée, ou encore le nombre de personnes utilisant internet explorer
    car ces données ne seront importantes que pour moi, dans mon back office où sont rangées les données analytiques .. donc est-ce vraiment bien grave si il manque 1 click de temps en temps ?

    Enfin je veux dire, a partir de combien de click sur un même script ce dernier commence à déconner (avec fichier texte) ? Juste pour info quoi, car je pourrais mixer MySQL pour ce qui va servir le plus, et les fichiers texte pour ce qui servira le moins (:
    Car si je comprends bien, ça va fausser le calcul du script, sur deux utilisateurs, un récupère 3+1 et l'autre récupère 3+1 aussi et écrira en même temps 4, donc une erreur de cohérence, mais ne faut il pas ouvrir le script en même temps à la milliseconde près ? Jusqu'à combien de visiteurs en même temps le fichier texte reste une option envisageable sans trop que ça deviennes incohérent dans les résultats ?? Un nombre pour ordre d'idée peut être ...

    Après si cela deviens trop compliqué je passerai au bdd pour tout mes scripts (: écrire dans une table ou un fichier texte c'est pareil ^^

    Au sujet du projet que je vous ai parlé, je n'ai aucune idée du nombre de visiteurs que je souhaite toucher par mois, ni du nombre de gens qu'il va attirer, je sais juste qu'avec la pub adéquate il y aura peut-être (ou non ) des visites ...

    Merci encore les gars (:

  5. #5
    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
    Enfin je veux dire, a partir de combien de click sur un même script ce dernier commence à déconner (avec fichier texte) ?
    A partir de 2

    Oui , il faut que les fonctions soient appelées en même temps. Mais ta réflexions n'est pas la bonne. La question à se poser n'est pas "A partir de quand ca va merder" mais "Est ce qu'il existe une probabilité pour que ca ne marche pas". Si la réponse est oui , il faut une solution , sinon le problème surgira à un moment ou à un autre a des fréquences plus ou moins élevé et c'est typiquement les bugs les plus compliqué à trouver/résoudre.

    Si je le vérouille et qu'un deuxième utilisateur lance le script en même temps, le 2e utilisateur va se trouver avec une erreur car le fichier sera en lecture seule non ?
    Jamais utilisé flock mais si ca marche comme tous les système de lock , flock va juste être bloquée , le temps que l'autre verrou soit libéré (d'où l'importance de bien libérer) ou que le timeout d'exécution soit atteint.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre actif
    Profil pro
    Lycéen
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Si la réponse est oui , il faut une solution
    Peut on alors au début du script (de fichiers texte) dire qu'on récupère le contenu du fichier, qu'on le stocke dans une variable ($Contenu_Fichier par exemple), qu'on incrémente et avant de réécrire le résultat, on relis le fichier, on stocke dans une autre variable ($Contenu_Fichier2 par exemple), et enfin si $Contenu_Fichier est différent de $Contenu_Fichier2 alors on recommence en relisant le fichier, et remplaçant mes deux variables jusqu’à ce que les deux variables soient les mêmes, que le fichier s'incrémente, et enfin que la boucle s'arrête.

    Cela ne devrait il pas me donner toujours une valeur réelle ? Et aussi être fiable ? Je m'obstine car je ne comprends pas pourquoi ça ne va pas ... la base de donnée est faite pour ça, être manipulée en même temps, alors pourquoi le fichier texte non ? C'est le fait de récupérer le contenu qui gène hein ?! Peut on pas incrémenter sans le lire ??

    Ou sinon il y a ça ?? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?php
     
    $LeFichier = "chemin/du/fichier.txt"; //ma variable chemin du fichier
    $Contenu_Fichier = file_get_contents ($LeFichier); // lire et ranger le contenu dans une variable
    $Contenu_Fichier2 = $Contenu_Fichier + "1"; // la variable lue mais avec +1
     
     
    if (stripos($Contenu_Fichier, $Contenu_Fichier2) !== FALSE) {
     
    	echo"Les deux fichiers sont les mêmes on peux écrire dedans alors !";
     
    	$fdata = intval($Contenu_Fichier)+1; // on fait +1
     
    	file_put_contents($LeFichier, $fdata); // écrire le résultat
     
    } elseif (stripos($file_content, $file_content2) == $file_content+2) {
     
    	echo"Les deux fichiers ne sont pas les mêmes on increment +2 !";
     
    	$fdata = intval($Contenu_Fichier)+2; // on fait +2
     
    	file_put_contents($LeFichier, $fdata); // écrire le résultat
    } elseif (stripos($file_content, $file_content2) == $file_content+3) {
     
    	echo"Les deux fichiers ne sont pas les mêmes on increment +3 !";
     
    	$fdata = intval($Contenu_Fichier)+3; // on fait +3
     
    	file_put_contents($LeFichier, $fdata); // écrire le résultat
    } elseif (stripos($file_content, $file_content2) == $file_content+4) {
     
    	echo"Les deux fichiers ne sont pas les mêmes on increment +4 !";
     
    	$fdata = intval($Contenu_Fichier)+4; // on fait +4
     
    	file_put_contents($LeFichier, $fdata); // écrire le résultat
    } elseif (stripos($file_content, $file_content2) == $file_content+5) {
     
    	echo"Les deux fichiers ne sont pas les mêmes on increment +5 !";
     
    	$fdata = intval($Contenu_Fichier)+5; // on fait +5
     
    	file_put_contents($LeFichier, $fdata); // écrire le résultat
    } else {
    	echo "Il y a une erreur mon gars";
    }
    	?>

Discussions similaires

  1. [MySQL] Base de données avec simple fichier texte sans MySQL
    Par johnrock dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 22/11/2016, 08h26
  2. [VB.net] Convertir Base de données .mdb en fichier Texte
    Par hunteshiva dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/05/2010, 14h04
  3. alimentation d'une base de données à partir de fichiers textes
    Par hb2ee dans le forum Persistance des données
    Réponses: 9
    Dernier message: 26/03/2009, 13h51
  4. alimentation de base de donnée par un fichier texte
    Par diamond_bleu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/06/2007, 08h42
  5. Base de donnée et export fichier text
    Par Kastagne dans le forum MFC
    Réponses: 6
    Dernier message: 07/03/2006, 22h27

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