JeuWeb - Crée ton jeu par navigateur
Comment alleger la Conexion - 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 : Comment alleger la Conexion (/showthread.php?tid=959)

Pages : 1 2 3


Comment alleger la Conexion - pyromaster - 20-03-2007

Bonjour a tous


j'aimerai modifier le code ci-dessous pour qu'il soit plus rapide
Citation :require ("conf.php3"); //fichier contenant les info de conexion
$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];//pseudo du membre
$requete = mysql_query("SELECT * FROM membre WHERE `pseudo`='$pseudo_membre'");
$result = mysql_fetch_array ($requete);
$pseudo = $result['pseudo'];
$mail = $result['mail'];
//passage des information a flash pour le score
$alliance = $result['alliance'];
$id = $result['id'];
$argent = $result['argent'];
$tritium = $result['tritium'];
$niveau = $result['niveau'];
$experience = $result['experience'];
$hp = $result['Vie'];
$bouclier = $result['bouclier '];
$mercenaire = $result['mercenaire'];
$classement = $result['score'];//calculer le classement avec score
Merci de votre attention


RE: Comment alleger la Conexion - Shidame - 20-03-2007

Je ne vois pas grand chose à faire.

Si tu n'as pas besoin de tout les champs de ta table, mets "SELECT champs1, champs2 FROM table", sinon laisse l'astérisque.
Code :
...
$requete = mysql_query("SELECT * FROM membre WHERE pseudo='".$pseudo_membre."' LIMIT 0,1"); // la concaténation est plus rapide, le LIMIT 0,1 c'est pour etre sur de n'avoir q'un seul enregistrement en retour
$result = mysql_fetch_array ($requete);
mysql_free_result($result); //  pour libérer la mémoire
mysql_close(); // si tu n'en as plus besoin après :)
...



RE: Comment alleger la Conexion - Plume - 20-03-2007

Non, on ne laisse jamais l'astérisque. Merci de votre compréhension ^^
La concaténation est effectivement plus rapide et c'est la méthode que je défend. Cependant, certain comme Sephi-Chan, défende la méthode de pyro' pour des raisons de lisibilité du code {entre autre ... enfin je crois ^^}. Ca se défend, mais moi j'aime pas encore assez Smile
Ensuite, je vois mal comment alléger étant donné que tu ne fais qu'une connection banale ^^


RE: Comment alleger la Conexion - kunutheking - 20-03-2007

Tu peux aussi utiliser mysql_fetch_assoc ou mysql_fetch_row à la place de mysql_fetch_array qui est plus lent...


RE: Comment alleger la Conexion - Sephi-Chan - 20-03-2007

En effet, même quand on utilise tous les champs il est préférable de les citer un par un, de manière à dispenser leur recherche au moteur.

Non !
Je ne suis pas contre la concaténation que j'utilise beaucoup... Pour l'affichage des chaînes (avec les opérateurs . et , ), l'affectation de variable (avec .=), etc.

Simplement dans le cas d'une requête SQL je préfère la lisibilité à l'économie d'une milliseconde.
Et cette lisibilité, je l'obtiens grâce à la fonction sprintf().


Sephi-Chan


RE: Comment alleger la Conexion - Shidame - 20-03-2007

Désolé pour l'astérisque, à dire vrai je ne l'utilise jamais car des qu'on fait de la jointure il disparait de lui meme.


RE: Comment alleger la Conexion - Sephi-Chan - 20-03-2007

Je pense que qu'on puisse te reprocher cette habitude. Wink

C'est également en utilisant les jointures que je me suis définitivement débarassé de l'astérisque dans mes requêtes, car il m'emêchait d'écrire des alias de colonnes. Smile


Sephi-Chan


RE: Comment alleger la Conexion - pyromaster - 20-03-2007

Si jai bien comprit le script que j'utilise n'a pas de difference sur la vitesse ou en tout cas c'est pas remarquable car 1 milliseconde ces rien.donc je vais garder mon petit script.


RE: Comment alleger la Conexion - Shidame - 20-03-2007

Smile

De plus merci Sephi-Chan pour m'avoir re fais penser a sprintf(), car je voulai voir si je pouvai l'adapter dans ma classe mysql :p
Pour info pour l'instant j'utilise cette methode :
Code PHP :
<?php 
public function prepareQuery($query)
{
$numarg = func_num_args();
for (
$i=1; $i < $numarg; $i++)
{
$var = func_get_arg($i);
if ( !
is_scalar($var) && !is_null($var) )
throw new
Exception('Erreur MySQL : impossible de préparer la reqête "'.$query.'"., problème d\'argument.');
if (
is_string($var)) $var = mysql_real_escape_string($var);
$query = str_replace('{'.$i.'}', $var, $query);
}
$this->query($query);
}
Donc je pense que c'est faisable, voir si c'est plus rapide que str_replace :p

Edit : petit oublie ;p suffit de faire comme ca
Code PHP :
<?php 
$db
->prepareQuery("SELECT champs1 FROM table1 WHERE id='{1}'", $id);



RE: Comment alleger la Conexion - Sephi-Chan - 20-03-2007

En effet, dans ton cas l'utilisation de sprintf() semble plus pratique.

Par curiosité, ta classe SQL est rôdée ? Parce que je me lance dans la POO et je me demande à quoi peut bien ressembler une classe SQL complète. M'enfin à voir ça, ça me décourage un peu. Je ne connais pas tout les exceptions et les autres éléments un peu particuliers... Sad


Sephi-Chan