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 :

[Conception] Cache base de donnée Versus cache FTP ? [Tutoriel]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut [Conception] Cache base de donnée Versus cache FTP ?
    Bonjour, pour une application open source que je developpe j'utilise un système de cache, en stoquant des tableaux PHP.

    Il y a deux façons de les stoquer, soit à l'aide d'un var_export() dans un fichier .php, soit en les serializant dans une table cache avec une ligne par fichier.

    Après une série de benchmark je me suis rendu compte que le cache FTP était 2 fois plus lent que le cache Base de donnée, chaque include() coute environ 0.02 secondes alors qu'une requète prend 0.0004 seconde.
    La question que je me pose c'est quel système utilisé ? Y a t'il des avantages à utiliser le FTP avec include() plutot que la base de donnée ? Sachant que l'application que je developpe est destinée à être redistribuée, y a t'il vraiment un avantage a utiliser le FTP (est il utile d'économiser le plus possible les requètes sur la base de donnée ?)

    Merci d'avance pour votre éclairage
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Y a t'il des avantages à utiliser le FTP avec include()
    Il n'y en a aucun.
    Par contre, utiliser le système de fichiers, c'est déjà beaucoup plus intéressant.

    C'est fou comme les gens peuvent utiliser le terme FTP pour tout et n'importe quoi.
    FTP c'est un protocole de transferts de fichiers... C'est généralement avec ce protocole qu'on transfère les fichiers sur le serveur HTTP.
    Mais bien entendu, ensuite, une fois que les fichiers sont sur le serveur, on ne repasse pas par FTP pour accéder aux autres fichiers du serveur.
    Boost ftw

  3. #3
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Oui en fait c'est ce que je voulais dire désolé ^^
    Donc il est plus avantageux d'utiliser les fichiers via include() plutot que le cache dans la base de donnée ? Est ce que le nombre de requètes a long terme a vraiment un impact négatif ?

    (au fait pour les chiffres je retire ce que j'ai dit, je faisais mes tests sur un serveur windows assez lent ce qui fait que les accès fichiers étaient lents, j'ai retester sous linux et c'est bien plus rapide).
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  4. #4
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    +1 loufoque

    Mon opinion sur le sujet :

    - via base de données : à moins qu'il s'agisse d'une base fichier très rapide, sans phase de connexion, comme sqlite par exemple, ça n'a pas grand intérêt à mon sens. En effet rien que l'étape de connexion à la base de données est très couteuse, donc les gains risquent de prendre une claque.

    - via fichiers .php + include : là le résultat va dépendre fortement de l'utilisation d'un cache d'opcode ou non (eAccelerator, Zend Optimizer, etc). Si tu n'utilises pas de cache d'opcode, ton script de cache devra être "compilé" à chaque inclusion... une catastrophe en termes de temps CPU . Et si tu utilises justement un cache d'opcode, selon la quantité de données de cache tu risques vite de saturrer la mémoire allouée au système en question, et au final pénaliser tous les scripts hebergés.

    - via fichier raw (bruts) : une très bonne solution à mon avis... à condition que le système de fichier soit local. En effet chez certains hebergeurs le système de fichier est déporté sur un "filer" via NFS ; et dans ce cas les écritures seront surement assez lentes, et tu risques de rencontrer des problèmes de synchronisations entre les différents nodes du "cluster".

    - via mémoire : d'un point de vue performance, c'est certainement la solution la plus rapide. De nombreuses API existent, eAccelerator en propose justement une, qui a l'avantage de pouvoir compresser les données en mémoire ce qui permet d'avoir un équilibre entre "consommation mémoire" et "gain de performance". Il gère également de lui même les verrous, donc son utilisation est très simple.
    Toutefois il est possible de le faire soit même via les fonctions SHM et sémaphores de PHP. Coté clustering, les solutions "mémoire déportée" du style memcached peuvent également être utilisées.



    Sur mon site j'ai tendance à mixer plusieurs méthodes : les données necessaires très fréquement sont en mémoire, celles qui sont "régulières" sont en fichier, et les "répétitives mais pas tellement fréquentes" sont dans des champs en supplémentaires des tables existantes des bases de données.


    ......

    j'espère t'avoir éclairé un peu sur le sujet... sans être trop sorti du sujet (c'est un sujet qui me tient à coeur )



    PS : dark j'ai moi même développé plusieurs systèmes de cache... j'avais d'ailleurs rendu publique une partie des sources, je t'en fais volontiers cadeau si tu veux t'en inspirer ou modifier ou utiliser ou même jetter
    Google is watching you !

  5. #5
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Je suis effectivement intéressé par tes sources pour voir un peu le fonctionement de tout ça, n'hesites pas a me donenr le lien par MP ou sur le topic ^^

    Merci pour les explications
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/06/2007, 11h56
  2. [Conception]cohérence Base de données Access 2003
    Par hugue dans le forum Modélisation
    Réponses: 4
    Dernier message: 25/03/2007, 18h06
  3. [C# 2.0] Base de données versus fichier binaire.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/07/2006, 21h06
  4. Fenêtre base de données à moitié cachée
    Par Tententai dans le forum IHM
    Réponses: 2
    Dernier message: 09/12/2005, 11h06
  5. Conception de Base de données (AutoIncrément oui ou non)
    Par matgel dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 16/04/2004, 08h47

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