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 :

Cache PHP ou base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Par défaut Cache PHP ou base de données
    Bonjour,

    dans un projet j'ai une table sql de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    coucou(id int,nb int,...,...,...)
    le champ id est une clé primaire.
    Cette table contient des dizaines de milliers de lignes.
    J'ai besoin d'y acceder souvent, le plus rapidement possible, desfois pour obtenir une seule ligne, desfois des milliers ...

    Je peux faire une "requête" sur ma table, quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from coucou where id=5
    Ou alors je pensais, vu que certains champs de ma table sont fixes (ne changent jamais de valeur) (c'est le cas de "id" et "nb"), je pensais les sauvegarder dans un fichier php.

    table_coucou.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    // $table[<id>] = <nb>; 
    $table[1] = 5;
    $table[2] = 25; 
    $table[3] = 35;  
    $table[4] = 45; 
     
    ...
    Ainsi si je veux acceder au champ "nb" de la ligne ayant l'id de valeur 5, j'ai juste à faire :

    script.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include("table_coucou.php");
    if(isset($table[5])) 
    {
        echo $table[5];
    }
    J'ai pensé à ca car j'ai besoin de quelque chose de rapide, accèder au i-ème élément d'un tableau me semble plus rapide que séléctionner un champ d'un enregistrement précis d'une table d'une base de donnée ?

    Mais après je me suis posé une question,
    il va falloir que php stocke tout mon tableau $table en mémoire
    Imaginons que $table prend en mémoire 10 mo.
    C'est faisable de charger une fois 10 mo ...

    Mais si 100 clients executent le script script.php sur le même serveur en même temps, le tableau $table est chargé 100 fois en mémoire ? soit 100*10 = 1 go nécessaire, et la je vais avoir des petits problèmes ?

    Comment faire en sorte de charger ce tableau qu'une seule fois, même s'il y a 100 clients qui ont besoin d'y avoir accès en même temps ?

    Ou bien j'oublie ce 'système de cache' et je conserve uniquement ma base de donnée ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En fait tu as repondu toi même a ta question :

    Charger toutes les données dans ton script, ca prend de la mémoire. (peut etre pas 10Mo quand même mais c'est toujours trop).

    Par contre c'est le boulot d'une base de donnée d'aller chercher rapidement de l'information parmis des milliers d'enregistrement alors que je ne pense pas que PHP ait été optimisé dans l'optique de manipuler d'énormes tableaux.

    Pour en avoir le coeur net, j'ai fais des tests : si le temps d'execution de la methode tableau est evidemment directement proportionnel a la taille du tableau construit, la methode base de donnée s'effondre egalement quand la base augmente (test sur 200000 enregistrements).

    Cependant dans la vie réelle, un script ne fait pas 200 requête sur une base de donnée ; les temps de requête sont en fait imperceptibles pour une page normalement constituée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [MySQL] Galerie image PHP avec Base de Donnée
    Par choulaone dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2007, 17h51
  2. PHP et base de données
    Par Ucom-C++ dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2007, 20h08
  3. Créer des pages dynamiques PHP avec base de données
    Par noobspower dans le forum Langage
    Réponses: 8
    Dernier message: 13/02/2007, 08h32
  4. [Conception] formulaire en php et base de donnée
    Par damien_1985 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/06/2006, 21h47
  5. php+mysql+base de donnée +recherche
    Par nizar05 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 26/11/2005, 12h04

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