View topic - Optimisation des ressources d'un SERVEUR ! :: FREDSOFTWARES
 
Navigation
RegisterRegister    Log inLog in    FAQFAQ    SearchSearch   
Optimisation des ressources d'un SERVEUR !
Goto page 1, 2  Next
 
Post new topic   Reply to topic    FREDSOFTWARES Forum Index -> Questions PHP/MySQL
View previous topic :: View next topic  
Author Message
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 4:15 pm    Post subject: Optimisation des ressources d'un SERVEUR ! Reply with quote

Bonsoir !

Comme je vous en avais déjà parlé lorsque nous avions travaillé en collaboration l'année dernière sur l'analyse de la programmation du site Populassite, je viens de trouver une idée en ce qui concerne le compteur de boutons 88x31 affichés par populassite sur ces palettes !

Je sais qu'en temps normal, pour cela, il suffit d'utiliser des requêtes SQL... Ce qui implique donc une connexion_sql au prélable, puis une déconnexion, etc.

Même si je suis sur un serveur dédié, comme j'ai l'esprit d'optimisation, et que je ne souhaite pas consommer bêtement de l'énergie, je fais tout pour utiliser des systèmes de "cache" php (contenant déjà les valeurs des variables) au lieu de requêtes sql intempestives, et il s'avère que c'est une excellente solution puisque lorsque j'étais sur du mutualisé, le fait d'avoir passé en mode cache différé (toutes les 30 s) avait fait reprendre plein de ressources à mon serveur mutualisé de l'époque !

ENFIN, BREF...

Voilà mon idée !

Je voudrais savoir s'il est (à votre avis) plus efficace de faire des créations de fichiers vides dans le répertoire /cache de Populassite et de simples <renommages> de fichiers pour ainsi comptabiliser les affichages des boutons de chacun de mes 500 membres actifs dans la journée ? (c'est une idée que je viens d'inventer à l'instant pour optimiser les performances du serveur lol)

Dîtes-moi si ça marcherait mieux à votre avis que des connexion_sql, requête s'insertion, de sélection, et déconnexion... Quand le trafic est important, je crois savoir que le SQL est déficient !!!! (par rapport à mes expériences avec le mutualisé) car il y a trop de <connexions simultanées>, et tout plante assez rapidement !!!!

Donc, je vous répète mon idée : il suffirait d'avoir 500 fichiers vide portant (par exemple) les noms nbb_id_1_0, nbb_id_2_0, etc.

Et si par exemple, en fin de journée, l'id 1 a fait affiché 500 boutons de son site par l'intermédiaire des palettes de Populassite, alors le fichier vide portera le nom suivant : nbb_id_1_500

Voilà donc mon idée intuitive !!

Dîtes-moi si c'est plus RAPIDE que le sql ou plus fiable ou perforamnt (j'ai l'impression intuitive que OUI lolol car il suffit juste d'une petite option comme "dir *.*" et au pire un fwrite (pour écrire le premier fichier vide) mais surtout le plus drôle : le RENOMMAGE direct du fichier... qui je pense, pour un serveur, doit être archi rapide à gérer en comparaison avec des requêtes sql et des connexions !!!)

@+++

Cordialement
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 6:34 pm    Post subject: Reply with quote

effectivement la génération de fichier plat sans requettes mysql c'est l'idée...éviter les commande dir et directement donner les noms des fichiers avec des id pour pouvoir faire un fopen direct dessus
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 6:41 pm    Post subject: Je suis d'accord mais Reply with quote

Oui, bien sûr, j'y avais pensé !

Mais, est-ce que le fait de LIRE un fichier avec un FOPEN, de remettre à jour la variable, de ré-écrire avec un FWRITE n'est-elle pas plus fastidieuse (car plusieurs opérations de lecture/ECRITURES sur un disque dur est peut-être mauvais ?)

que de faire simplement un accès lecture avec une instruction, par exemple pour un membre d'id X (dans mon exemple)...

Code:
dir nb_X_*


Pour récupérer le nom exact... Ensuite, une simple addition PHP... et un RENOMMAGE par ex :
Code:
ren nb_X_13 nb_X_14


pour ainsi expliquer qu'il y a eu un affichage de plus de bouton pour l'id X

car je vous rappelle que le but de ma maoeuvre est de compter le nombre d'affichages... donc, mon idée pour éviter les écritures d'octets sur le serveur (correspondant aux varaibles php ayant des valeurs) je préfère faire un REN... ce qui optimise peut-être la vitesse d'écriture sur le disque dur non ? car une réécriture fwrite nécessite des trucs de fragmentation du disque dur je crois... non ?

en gros ?

vous pensez donc que l'astuce du [dir * (bien ciblé !!) + REN] est plus LENTE qu'un [FOPEN sur fichier connu + accès à une variable PHP + remise à jour de cette variable + FWRITE] ?


Merci à vous pour vos éclaircissements de qualité Wink
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 7:22 pm    Post subject: Reply with quote

en fait remplacer des requettes SELECT avec un WHERE est intéréssant quand on peux accéder direct au fichier contenant les datas ex : tutu_1.php
ensuite pareil les updates du contenu dedans est plus rapide, de toutes les façons une base de données fait aussi des écritures disques donc..
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 7:28 pm    Post subject: OK Reply with quote

Oui, oui !

D'une certaine manière, je suis d'accord avec vous... Mais comme je voulais "supprimer" ces écritures disque le plus possible lol !

Donc, ok...

Le "dir ciblé" avec "ren" du fichier souhaité... c'est mauvais !

Comment êtes-vous autant au courant de cela ? Wink

Un renommage (avec dir ciblé au préalable) est donc moins performant qu'un FWRITE selon vous à cause du "DIR" qui met trop de temps (car d'après moi, REN va plus vite que FWRITE) ?

Vous n'avez pas été très explicite par rapport à ça, mais je pense que selon vous, le dir est à PROSCRIRE même s'il est bien ciblé... c'est bien ça ?

un DIR a donc une certaine lenteur avec un fort trafic même si on le "cible" ?

@+++ et merci encore ! mais alors, si j'utilise votre technique suggérée, cela signifie que les fichiers ne seront plus "plats", mais "presque plats" dans la mesure où il contiendront par exemple : "$n = 1"
et à l'appel suivant : "$n = 2", etc.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 7:37 pm    Post subject: Reply with quote

Un renommage (avec dir ciblé au préalable) est donc moins performant qu'un FWRITE selon vous à cause du "DIR" qui met trop de temps (car d'après moi, REN va plus vite que FWRITE) ?

-> je sais pas précisement dire...

Vous n'avez pas été très explicite par rapport à ça, mais je pense que selon vous, le dir est à PROSCRIRE même s'il est bien ciblé... c'est bien ça ?

-> un dir c'est comme faire un select * ça browse donc ça pompe
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 7:54 pm    Post subject: Reply with quote

ok, MERCI !

je comprend

toutes les "boucles de recherche éventuelles sur le disque dur", il faut les retirer en gros car elle consomme du temps...

mais le SQL admet aussi des "connexions" et des "déconnexion"

pourquoi y a*--til des saturations parfois ?

max connect...

ça vient de quoi ça ?

cette limite ?

@+++

je vais donc utiliser un fread, et un fwrite... ça sera sûrement plus efficace qu'une connexion sql, update et deconnexion_sql

car ya pas de recherche à faire
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 8:05 pm    Post subject: Reply with quote

populassite wrote:
ok, MERCI !

je comprend

toutes les "boucles de recherche éventuelles sur le disque dur", il faut les retirer en gros car elle consomme du temps...

mais le SQL admet aussi des "connexions" et des "déconnexion"

pourquoi y a*--til des saturations parfois ?

max connect...

ça vient de quoi ça ?

cette limite ?

@+++

je vais donc utiliser un fread, et un fwrite... ça sera sûrement plus efficace qu'une connexion sql, update et deconnexion_sql

car ya pas de recherche à faire


mysql ça viens des connexions persistantes (conseillées) mais votre hébergeur ne maitrise rien et ça sature le serveur, il y a une conf spéciale a faire
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 9:16 pm    Post subject: Reply with quote

non, en fait, je n'ai pas utilisé vos méthodes conseillées comme j'avais des doutes sur le serveur justement et j'ai donc mis des connexion_sql et des deconnexion_sql

et non des persistantes... mais bon, si ça se trouve, il suffit de changer une variable pour éviter le bug de "max connect"

salutations
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 9:21 pm    Post subject: Reply with quote

populassite wrote:
non, en fait, je n'ai pas utilisé vos méthodes conseillées comme j'avais des doutes sur le serveur justement et j'ai donc mis des connexion_sql et des deconnexion_sql

et non des persistantes... mais bon, si ça se trouve, il suffit de changer une variable pour éviter le bug de "max connect"

salutations

il faut mettre cela dans le conf mysql

wait_timeout=300
interactive_timeout=300
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 9:25 pm    Post subject: Reply with quote

ce qui signifie ???
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 9:30 pm    Post subject: Reply with quote

populassite wrote:
ce qui signifie ???


a donner a l'hébergeur
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 9:42 pm    Post subject: Reply with quote

oui, mais ça veut dire quoi les timeout, etc. ?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
admin
Site Admin


Joined: 01 Aug 2002
Posts: 305
Location: 182

PostPosted: Wed Apr 13, 2005 9:46 pm    Post subject: Reply with quote

populassite wrote:
oui, mais ça veut dire quoi les timeout, etc. ?


c'est pour couper les connexions qui trainet
_________________
Fred

Fredsoftwares Forum Admin
Back to top
View user's profile Send private message Send e-mail AIM Address Yahoo Messenger MSN Messenger
populassite



Joined: 27 May 2004
Posts: 62
Location: France

PostPosted: Wed Apr 13, 2005 10:09 pm    Post subject: Pas d'utilisation de requêtes sql : comptabilisation directe Reply with quote

OK !

maintenant, voilà le script que j'ai réalisé, en suivant vos conseils pour la comptabilisation de l'affichage des boutons sans utilisation de requêtes SQL inutiles avec des "where" (il fonctionne) mais j'aimerais votre avis d'expert : s'il est suffisamment efficace tel qu'il est programmé là...

Code:
function compter_bouton($id) {

   global $root;

   $fichier    = $root."cache/nboutons/$id";

   $fp       = @fopen($fichier, "r");

   if ($fp) {

      $nb   = fread($fp,filesize($fichier));

      fclose($fp);

   } else $nb   = 0;

   $nb++;

   $fp       = fopen($fichier, "w");

   fwrite($fp,$nb);

   fclose($fp);
}
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    FREDSOFTWARES Forum Index -> Questions PHP/MySQL All times are GMT + 1 Hour
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group