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

Langage PHP Discussion :

Mettre en Cache des variables


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut Mettre en Cache des variables
    Bonjour,

    Je suis actuellement le nouveau développeur d'un e-commerce basé sur osCommerce, mais que l'on peut qualifier aujourd'hui de "fait main" (très modifier en 12ans...).
    Nous sommes actuellement sur 400 000 visites jour, des sessions de 6 min et 400 visiteurs simultanés (max)
    Le front utilise le moteur de template Twig et CacheLite.
    J'ai un souci avec ce dernier qui met en cache une contenu HTML.
    Je souhaiterais mettre en cache une variable.

    Je m'explique.
    En gros à ce jour le site fonctionne ainsi :
    1. Appel de la page
    2. Chargement des scripts et fonctions
    3. Chargement de l'entête du site (twig)
    4. Vérification du cache pour le contenu central, si valide affichage (twig) sinon calcul + mise en cache + affichage
    5. Affichage du footer (Twig)


    L'entête et footer n'était pas mis en cache car avait des informations personnalisés (Panier, Compte...)

    Mon problème est qu'aujourd'hui je souhaite avoir des infos dans le header dépendant du contenu.
    D'où mon idée de mettre en cache des calculs (variables) plutôt que du contenu html.
    Ce qui donnerai :
    1. Appel de la page
    2. Vérification du cache, si ok utilisation sinon calcul des variables et mise en cache
    3. Calcul des éléments propore à l'utilisateur
    4. Affichage de la page (Twig)


    Cela serait plus propre à mon goût.

    Existe t il un tel système de cache ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pour mettre des variables en cache , il faut te tourner vers des caches applicatif tels que APCu , XCache , etc ...
    Mais si cette variable est différente en fonction des utilisateurs ça risque d'être compliqué.

    Comme pour l'UI tu ne peux mettre en cache que des variables communes à tous.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    Bonjour et merci grunk,

    Les variables a mettre en cache ne sont pas les personnalisés, mais des génériques (listing de produit, d'article...)
    Nous avons un grand nombre de page et j'ai peur que APC soit limitant, j'ai lu qu'il ne géré pas plus de 512Mo.

    J'ai me suis tourné sur Memcache, mais cela semble "complexe".

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pas de limite à 512Mo à ma connaissance avec APCu.

    Ce qui peut arriver c'est que le système limite la taille maxi d'un segment mémoire auquel cas il faut configurer APC pour utiliser plusieurs ségments via : apc.shm_segments
    Après ca reste du cache en RAM donc tu vas être limité par ce que ton serveur possède moins la ram "utile" qu'il faut lui reserver. Si ton serveur à 16Go de ram tu vas pas en allouer 15 pour du cache sans quoi le reste aura du mal à fonctionner.

    Memcached est en général utilisé sur des serveurs dédiés à cet usage. En gros tu vas par exemple avoir 10 serveurs de cache avec chacun 32Go de ram pour pouvoir profiter de 320Go de cache. APC lui est local à la machine.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il est possible de cacher directement dans des fichiers également. C'est courant de le faire pour des résultats de requêtes SQL car c'est généralement (dans 95% des cas) l'exécution des requêtes SQL qui prend le plus de temps.

    Après c'est forcément plus lent que des systèmes comme APC ou Memecache vu que c'est sur le disque dur et non en RAM (mais ça reste clairement et largement plus rapide que des requêtes SQL) et ça a un inconvénient par rapport à ces systèmes, c'est que ça ne gère pas l'atomicité des données étant donné qu'il est impossible d'écrire exactement en même temps dans un fichier.

    Après c'est globalement plus facile à mettre en place.

    A noter que PHP intègre directement un système de Cache nommé OPCache à partir de la version 5.5 (et suivantes).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    OPCache comme son nom l'indique c'est du cache d'opcode. Ca permet d'éviter à php de reparser le fichier php pour regénérer le bytecode qui sera ensuite executé.
    C'est donc un niveau avant les cache comme APCu qui eux cache vraiment les données utilisateurs.
    C'est très utile sur les site à fort traffic puisque qu'on gagne réellement en temps d'execution.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Redis est pas mal. Très facile à utiliser, avec et hors PHP, rapide, multiples types de données, possibilité de persistance sous forme de fichier si nécessaire...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    Merci pour vos retours,

    j'étudie toujours l'histoire.

    J'ai trouvé cela :
    http://www.phpfastcache.com/

    Cela semble facilité l'utilisation, et je pensais utiliser (la aussi simplement) le système "files" qui est finalement comme CacheLite.

    Qu'en pensez vous ?

    Mon souci est d'évaluer les perfs...

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Ca m'a l'air d'être en effet OK, c'est propre et toujours maintenu. C'est exactement ce genre d'outils qu'il faut que tu utilises, tu peux tester.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    C'est en place sur deux pages à fort traffic. Je ferais un retour d'ici un petit mois quand les chiffres seront parlant.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2015, 11h41
  2. Mettre en cache des données
    Par Julien Bodin dans le forum Général Java
    Réponses: 1
    Dernier message: 10/02/2010, 10h25
  3. Mettre en cache des vues supervision
    Par FaTaL25 dans le forum Automation
    Réponses: 0
    Dernier message: 25/05/2009, 11h37
  4. [MySQL] Php / Html Mettres des Variables PHP en Values sur des form
    Par Jimmy_S dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/03/2006, 11h18
  5. [CSS] Mettre des variable dans une feuille de style???
    Par Shakta dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/02/2006, 10h39

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