Optimisation MySQL

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Optimisation MySQL

Message le Sam Avr 17, 2004 21:28

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.

kasar
WRInaute discret
WRInaute discret
 
Messages: 93
Inscription: 2 Mar 2004

Un gestion de cache peut-etre ?

Message le Sam Avr 17, 2004 21:59

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/)

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Sam Avr 17, 2004 22:03

Merci, mais quelqu'un qui n'est pas encore venu sur mon site il vera le cache ou pas ?

kasar
WRInaute discret
WRInaute discret
 
Messages: 93
Inscription: 2 Mar 2004

les pages en cache

Message le Sam Avr 17, 2004 22:08

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.

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Sam Avr 17, 2004 22:15

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.

kasar
WRInaute discret
WRInaute discret
 
Messages: 93
Inscription: 2 Mar 2004

Optimisation php

Message le Sam Avr 17, 2004 22:20

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

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Sam Avr 17, 2004 22:31

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 ?

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Sam Avr 17, 2004 23:13

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) {
..... }

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Dim Avr 18, 2004 17:20

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 ?

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Dim Avr 18, 2004 18:14

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 ?

kasar
WRInaute discret
WRInaute discret
 
Messages: 93
Inscription: 2 Mar 2004

Benchmark

Message le Dim Avr 18, 2004 18:37

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.

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Dim Avr 18, 2004 18:44

jeroen a écrit: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...

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Dim Avr 18, 2004 18:56

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: Tout sélectionner
if (time()>@filemtime($file)+$delai_de_mise_a_jour) {
..... }

comprendo ?

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Dim Avr 18, 2004 19:29

ok, merci ;)

Oncle Tom
WRInaute impliqué
WRInaute impliqué
 
Messages: 812
Inscription: 31 Mar 2003

Message le Lun Avr 19, 2004 9:23

Sinon, à défaut de cacher ta page, tu peux mettre en cache les résultats de ta requête uniquement.
J'suis tombé dessus par hasard ce matin :
http://www.zend.com/zend/tut/tutorial-staub2.php

Ca a l'air vraiment pas mal ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité