Vous n'êtes pas connecté - 0 membre connecté
Catégories
Graphisme
Flash (51)
Print (66)
Programmation
PHP (66)
Base de données (17)
ASP (2)
CSS (26)
Hardware
PC (34)
Mac (14)
Linux (5)
Divers
Blabla (261)
933 Sujets
12337 Réponses
Programmation > Base de données > MySQL - Méthode de connexion ?
MySQL - Méthode de connexion ?
 Salut tout le monde !

Voila une question qui me turlupine depuis fort longtemps...
Est-il préférable au niveau performance serveur et rapidité d'ouvrir une seule connexion à la base en début de script ou d'ouvrir et de fermer une connexion à chaque appel de MySQL_Query() ?

Par exemple habituellement je passe mon identifiant de connexion en paramètre de mes fonctions :


<?
// Début de la page
$connexion MySQL_Connect("blabla");

// Mes fonctions
Function Machin($connexion)
{
    
$Res MySQL_Query("UN REQUETE",$connexion) Or Die(MySQL_Error());
    Return 
$Res
}

// Appels à mes fonctions + Traitement
$Res Machin($connexion);

// Fin de la page, fermeture de ma connexion
MySQL_Close($connexion);
?>

Mais ne devrais-je pas faire plutôt :

<?
Function Machin()
{
    
$connexion MySQL_Connect("blabla");
    
$Res MySQL_Query("UNE REQUETE",$connexion) Or Die(MySQL_Error());
    
MySQL_Close($connexion);
    Return 
$Res;
}

// Appels à mes fonctions + Traitement
$Res Machin();
?>
Ou encore devrais-je utiliser la fonction MySQL_Pconnect() ? mais là je marche sur des oeufs car il me semble que c'est risqué les connexions persistentes (risque d'atteindre la limite maximale de nombre de connexions simultanées autorisée par le serveur MySQL, ou encore risque de plomber le serveur en cas de boucle infinie)
Posté le 25 07 2006 à 17h20
benzor - Administrateur - www

Réponses - MySQL - Méthode de connexion ?
<< 1 2 3 >>
Le mystère est éclairci, merci angel. ;)
Posté le 26 07 2006 à 16h56
Ishiro - Membre - www
Bennezore > pas de "a" dans McFly de diou! :)

La classe de base (vieille version) de Nicolas Hoizey est ici developpeur.journaldun...

Les appels sont du style:
$tab_res = $bdd-> queryAllRecords("SELECT * FROM membres");
Ensuite t'as le nombre de lignes dans $bdd-> numRows() et dans une boucle qui va bien tu accedes aux resultats par $tab_res[$i] ['maColonne'];

En modifiant la classe tu peux faire en sorte que ca incrémente un compteur de requête qui sera accessible par $bdd-> nbRequetes() etc.

Après pas mal de modifications, elle fait ce qu'on veut cette classe bien pratique. :)
Posté le 27 07 2006 à 09h04
McFly - Membre - www
En fait c'est un peu la classe PDO MySQL mais réécrite à la main :)
Je vais aller jeter un oeil là-dessus.

Merci Maaaqueflaye
Posté le 27 07 2006 à 09h16
benzor - Administrateur - www
Un truc plus mieux, ce n'est pas plutôt d'acceder à sa table (ou bdd) en lecture seule ?
Ca existe bhein non ? Je sais plus :)
Posté le 27 07 2006 à 12h50
cob - Membre
les verrous de lecture/écriture sont gérés par le SGBD directement. sur un select il ne va pas verrouiller la table pareil que pour un insert ou un update. Par contre certains SGBD permettent de monter les bases (tables ?) en lecture seule, mais pour un site web, ça limite l'intêret :D
Posté le 27 07 2006 à 21h57
angel2k - Membre - www
Très :)
sujet intéressant qui ne fait que me réconforter dans le choix de la méthode que j'utilisais, celle d'une classe qui gère tout ça, aussi bien en C qu'en PHP :)
Posté le 28 07 2006 à 12h25
adrien - Membre - www
Arf, moi et mes remarques a balle2, je l'ai bien cherché :
Merci Angel, chui encore plus embrouillé qu'avant :)
Posté le 01 08 2006 à 11h45
cob - Membre
Je reformule :
les SGDB gèrent de façon automatique les accès concurrents. Pour éviter que 2 personnes ne modifient la même entrée (tuple) en même temps, ils posent un verrou. Ils peuvent le poser sur un tuple, une table, voire la base (les 2 derniers cas sont tendus généralement).
Exemple : si 2 utilisateurs font "en même temps" la requete "select * from ma_table", alors le SGBD pose un verrou en lecture qui autorise la lecture simultanée. Par contre si un utilisateur fait un "insert <machin> into ma_table" et l'autre "select * from ma_table" on voit bien qu'il va y avoir conflit, puisque la cohérence des données est menacée. Donc le verrou en écriture est placé "au dessus" de celui en lecture.

C'est clair maintenant ?

Pour ce qui est de monter une base en lecture seule, c'est possible avec oracle, mais on le fait pour des raisons de maintenance.
Posté le 01 08 2006 à 15h02
angel2k - Membre - www
Je viens de me programmer une classe Bdd moi aussi... (Et également une pour construire des formulaires plus rapidement, mais c'est un autre sujet...).

Sinon, il existe la librairie DB de PEAR, pour ceux qui ne veulent pas s'embeter à réinventer la roue.
Posté le 01 08 2006 à 15h24
Ishiro - Membre - www
Angel, vivi tout s'éclaire :)

En meme temps je me rend compte que ce serait pas une mauvaise idée d'investir dans une bible MERISE/SGBD/SQL/...
Si quelqu'un a des références à donnér (pour des books a moins de 40 euros), je dois pas être le seul a être preneur.
Posté le 04 08 2006 à 12h47
cob - Membre
<< 1 2 3 >>
Sujets Base de données
<< 1 2 >>
Classer une requête
Auteur : aguenard
Posté le 24 04 2007 à 11h17
5 Réponses (Nouveau sujet)
Sujet visité 1021 fois
MySQL > Eviter la (...)
Auteur : tyler
Posté le 02 04 2007 à 10h07
16 Réponses (Nouveau sujet)
Sujet visité 864 fois
MySql et hebergement
Auteur : nanook
Posté le 15 03 2007 à 09h04
7 Réponses (Nouveau sujet)
Sujet visité 670 fois
Comparaison de (...)
Auteur : airvai
Posté le 01 03 2007 à 10h05
6 Réponses (Nouveau sujet)
Sujet visité 900 fois
[résolu]sql 95 bdd !
Auteur : senkante
Posté le 08 02 2007 à 11h38
4 Réponses (Nouveau sujet)
Sujet visité 526 fois
[annulé]against
Auteur : veensez
Posté le 27 10 2006 à 20h15
5 Réponses (Nouveau sujet)
Sujet visité 809 fois
MySQL - Méthode de (...)
Auteur : benzor
Posté le 25 07 2006 à 17h20
24 Réponses (Nouveau sujet)
Sujet visité 767 fois
<< 1 2 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006