JeuWeb - Crée ton jeu par navigateur
[PHP] Accès rapides aux données - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [PHP] Accès rapides aux données (/showthread.php?tid=4261)

Pages : 1 2


[PHP] Accès rapides aux données - Cartman34 - 04-08-2009

Bonjour,

Depuis quelques temps, je me pose sérieusement la question de mettre en cache des données en "petite" quantité à accès fréquents.
En effet, on a tous des tables utilisateurs avec un id et un nom et d'autres données...
Les IDs viennent et partent et ce sont fréquemment les mêmes.
On a souvent besoin du pseudo associé à un ID.
MySQL gère bien la mise en cache mais pour cela, je ne trouve pas cela suffisant.
De préférence, ces données devraient être accessibles par tout le monde (pas de sessions donc)

J'aurais bien aimé utilisé la mémoire vive mais c'est pas top pour un mutua surtout quand on doit installer la lib. Et je n'ai trouvé que memcache et c'est un démon...

J'ai pensé à tout mettre dans un fichier mais ca ferait pas mal d'ouverture et de fermeture, non ? j'y gagnerai franchement quelque chose ?


RE: [PHP] Accès rapides aux données - schats - 04-08-2009

si jai bien combien tu veut remplacer mysql par un fichier Confused j'ai pas vraiment fait de test. il me semble que c'est plus rapide mais .... tu t'amuse pour le décrypter et tout recherche dedans tu t'amuse


RE: [PHP] Accès rapides aux données - nicodd - 04-08-2009

Le fait de devoir aller chercher tes infos, suivant l'exemple que tu as donné, les pseudos associés aux ids dans un fichier t'empèche d'utiliser des jointures mysql, ce qui fait qu'au final, le boulot du serveur SQL sera peu allégé, mais il te restera tout un traitement à faire.
Avoir les données en RAM est à priori le seul moyen de gagner des perfs, le fichier étant bien pour des petites données peu sollicitées, il ne faut pas oublier que si tu ne veut pas d'embrouille, tu dois verrouiller le fichier à chaque modification pour être certain que quelqu'un qui le lis à ce moment la n'aura pas des demi-infos à jour, et si tu commence à locker très souvent ton fichier, tout en voulant y accéder des dizaines de fois par seconde, ca va pas aller...
Les bases de données sont vraiment faites pour ca, vouloir les émuler en chipotant avec des fichiers sera lourd et pas plus performant...


RE: [PHP] Accès rapides aux données - Sephi-Chan - 05-08-2009

Je plussoie. Si tu veux du cache efficace et sûr, il faut te tourner vers la RAM de ton serveur avec des solutions comme Memcache ou APC. Et pour ça, il te faut du dedié. D'un côté, si tu as tant besoin de performances et que ton script est déjà optimisé, c'est qu'il est temps de songer à une machine plus puissante et idéalement dédiée.

En dehors de ça, si tes données ne craignent pas (genre une liste de connectés), tu peux utiliser le moteur de stockage Memory (en partant du fait que tu utilises MySQL).


Sephi-Chan


RE: [PHP] Accès rapides aux données - Anthor - 06-08-2009

(04-08-2009, 09:34 PM)schats a écrit : si jai bien combien tu veut remplacer mysql par un fichier Confused j'ai pas vraiment fait de test. il me semble que c'est plus rapide mais .... tu t'amuse pour le décrypter et tout recherche dedans tu t'amuse

Pas besoin d'encryptage, normalement ces fichiers ne doivent pas être accessible du répertoire public.


RE: [PHP] Accès rapides aux données - guile - 06-08-2009

Pour l'avoir expérimenté, et adopté, l'utilisation de fichier a accéléré mes scripts de 20%. Pas que mes requêtes ne sont pas optimisée (non non), mais elles sont très nombreuses, différentes, etc... C'est sur des scripts très long que j'ai pris la décision d'utiliser ce système.

J'ai néanmoins quelques conseils :
- il faut que ce système soit réellement utile. Si c'est pour éviter de lancer 2 requêtes SQL par script, il faut l'oublier.
- il faut gérer ces fichiers de façon très sûre.
- il faut également penser à toutes les solutions d'optimisation avant de se tourner vers les fichiers.


RE: [PHP] Accès rapides aux données - DragonMaster - 13-08-2009

J'opterais dans un futur projet pour quelque chose d'hybride. Sinon, pour les fichiers XML peuvent permettre de faire de belles structures facile à gérer. Je ne sais pas pour PHP mais j'utilise souvent les fichier XML en Java avec jdom et je sauve du temps et du code.


RE: [PHP] Accès rapides aux données - Sephi-Chan - 13-08-2009

Si vous êtes dans un environnement dédié, les fichiers n'ont pas grand intérêt pour cacher des données souvent sollicitées : mieux vaut utiliser Memcache.


Sephi-Chan


RE: [PHP] Accès rapides aux données - Ekilio - 13-08-2009

J'avais fait quelques benchmark sur ça, et en gros les résultats que j'avais trouvé (j'avais uniquement testé la différence MySQL / fichier, pas memcache ou autres) :

- Si on met en cache chaque requête et qu'on génère quand même la page normalement, mysql est plus rapide (Genre dans les 200%)
- Si on met en cache toute la page et qu'on vérifie juste si une page n'existe pas déjà avec ces arguements (genre un md5 sur les tableaux super-globaux) alors le cache est plus rapide (bien sûr il est aussi moins dynamique)

Mais j'imagine que ça dépends de pas mal de choses aussi, et en particulier de comment est codé le cache, donc le test rapide que j'avais fait n'est pas forcément toujours applicable.


RE: [PHP] Accès rapides aux données - tog84 - 13-08-2009

J'ai une question pratique d'application du cache.
Il m'arrive souvent de faire des while($result=mysql_fetch_object($requete)) pour afficher mes résultats multi-lignes d'une carte par exemple.
Donc, si j'ai bien compris, je peux stocker l'objet result en cache et exploiter les $result->zonex de la même manière.
Est-ce que je suis dans le vrai ?