Optimisation MySQL

  • Auteur de la discussion Auteur de la discussion XoSt
  • Date de début Date de début
WRInaute passionné
Bonjour,

Je suis entrain de faire mon nouveau site depuis maintenent 4 mois, et sur certains scripts, les requêtes SQL risquent d'être vraiment trop nombreuses, je voudrais donc optmiser les scripts avant de tout mettre en ligne :

Le script qui consomera beaucoup : Un service de Top-Sites gratuits avec beaucoup de requêtes à chaque affichage.

- J'aimerais utiliser un système qui ne mettra pas à jour le top à chaque connexion, c'est-à-dire, pas de requêtes inutiles toutes les 5 secondes.

- J'aimerais par exemple que toutes les 30 min un fichier soit crée pour chaque Top-Sites et qu'il s'affiche sans requetes SQL, et que 30 min plus tard, le fichier soit mis à jour avec MySQL, et pour les votes des tops qu'ils s'inscrivent dans un fichier par exemple et que la base soit mis à jour, ca évitera les requêtes excessives pour rein.

Voilà, je vous remercie de m'aidé, parce que j'ai aucune idée de comment faire tout ca.
 
WRInaute discret
Un gestion de cache peut-etre ?

Gère un cache HTML pour tes pages, tu auras un bon nommage des fichiers et tu peux régler la fréquence de mise à jour (Voir h**p://pear.php.net/)
 
WRInaute discret
les pages en cache

sont à considérer comme la version courante de ton site. A toi de définir les règles de mise à jour pour que les modifications soient prises en compte avec le délai le plus faible pour offrir à ton visiteur une version la plus à jour possible.

un bon système de cache garantit un équilibre fraicheur de l'info/pages statiques rapides à charger.

mais bon comme c'est complexe si tu n'es pas pointu en php, essaie d'abord de considérer tes flux d'infos, afin de minimiser les traitements, en filtrant au max les update à faire.
 
WRInaute passionné
Je voudrais faire comme ca :

On entre sur le top sites > le vote de l'internaute direction un fichier sur le ftp un fichier par top-sites
Pour afficher le top > chaque top aura un fichier html généré automatiquement à partir de la base
la base mysql sera mis à jour toutes les 30 min

Vous voyez comment faire ? c'est mieux d'avoir beaucoup d'accès au disque ? ou à la base ?

Merci.
 
WRInaute discret
Optimisation php

Je pense que le mieux c'est de servir du HTML (processeur peu sollicité, système fait pour ça).
Tout dépend de ta fréquentation. Si tu as 250 visiteurs simultanés, sers du HTML, et réseve les recalculs pour les heures creuses si ce la est possible.
Ton appli doit être très paramétrable si tu n'as pas d'a priori sur le trafic
 
WRInaute passionné
Donc mon idée est bonne ? mais pour les votes (chaque visite du top est sencé etre un vote) il faut utiliser le php meme pour écrire dans un fichier, ca risque pas de faire de grosses surcharges s'il y à des centaines de tops très visités ?
 
WRInaute passionné
tu peux avoir un fichier votes_en_attente.txt dans lequel tu ajoute une ligne à chaque vote
ex :

site-note

ce qui peut donner :
site1.com-2
site2.com-1
etc....

toutes les 30 minutes,tu parcours le fichier et tu mets a jour la base.

*******

pour chaque site tt peux mettre un fichier à jour toute les 30 minutes par exemple via la base en testant la date de derniere modif du fichier :

if (time()>@filemtime($file)+$delai_de_mise_a_jour) {
..... }
 
WRInaute passionné
Un mec ma dit ca sur phpfrance :

tu risque plutot de faire une double charge pour le serveur

a chaque visite de ta page = une requete en bd + une requette en fichier + un calcule sur les deux + une mise a jour toute les 30 mn de la bd+une mise a jour du fichier


une visite=une requete en bd + une mise a jour de la bd (elle est deja ouverte)
ca me semble plus court non ?
 
WRInaute passionné
a chaque visite : 1 mise a jour fichier (vote)
tt les 30 minutes : 1 mise à jour BD + 1 raz fichier (vote) + n mise à jour fichiers top-sites

non ?
 
WRInaute discret
Benchmark

Salut,
Difficile de trancher sans plus d'infos. Utilise une classe Benchmark (pear.php.net) pour évaluer la rapidité.
D'accord avec l'idée de profiter d'une cnx ouverte sur la DB pour faire les traitements nécessaires. Mais bon, considère que tu mettras ton serveur à genoux si tu as un traitement assez énorme, sinon ça tient la charge en général. Par exemple, j'utilise un formulaire qui peut ramener au max 515 lignes de 8 champs dans un de mes sites. C'est sur un héberg mutualisé standard et ça passe en 0.156 secondes en moyenne.

Voilà pour mon expérience, je ne sais pas si ça t'aide à avancer.
 
WRInaute passionné
jeroen a dit:
a chaque visite : 1 mise a jour fichier (vote)
tt les 30 minutes : 1 mise à jour BD + 1 raz fichier (vote) + n mise à jour fichiers top-sites

non ?

Il y à une connexion à la BD à chaque visite pour voir si les 30 min sont passé ou pas...
 
WRInaute passionné
Absolument pas car la fonction php filemtime($file) récupère la date de derniere modif d'un fichier.

tu peux faire, comme je disais plus haut :
Code:
if (time()>@filemtime($file)+$delai_de_mise_a_jour) { 
..... }
comprendo ?
 
Discussions similaires
Haut