IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Lister le nombre de connexions [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut Lister le nombre de connexions
    Bonjour,

    j'ai récupéré un gros script PHP et j'ai l'impression que dans le script il y a pas mal d'ouvertures de connexions à la base de données. J'aimerais savoir s'il existe une fonction PHP qui permet de lister les connexions ouvertes sur la base de données.

    Merci.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    j'ai mis ce bout de code à la fin de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $res_process = mysql_query('SHOW STATUS LIKE \'Connections\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    $res_process = mysql_query('SHOW STATUS LIKE \'THREAD%\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    et ça me donne ça comme résultat :
    Array ( [0] => Connections [Variable_name] => Connections [1] => 47131 [Value] => 47131 )
    Array ( [0] => Threads_cached [Variable_name] => Threads_cached [1] => 7 [Value] => 7 )
    Array ( [0] => Threads_connected [Variable_name] => Threads_connected [1] => 1 [Value] => 1 )
    Array ( [0] => Threads_created [Variable_name] => Threads_created [1] => 36 [Value] => 36 )
    Array ( [0] => Threads_running [Variable_name] => Threads_running [1] => 1 [Value] => 1 )

    ce qui veut dire qu'il y a 1 seule connexion à la base de données, bizarre, j'aurais juré qu'il y en avait plusieurs en même temps. Je vous mets un bout de code pour avoir votre avis :
    script principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    require_once 'custom/GLOBALS.inc.php';
    <body>
        ...
        requête 1
        $resEntite = q(requête 1);
        ...
        requête 2
        $resEntite = q(requête 2);
    GLOBALS.inc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    function initDb(){
        global $GLOBALS;
        $GLOBALS["oConn"] = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
        mysql_select_db($GLOBALS["SQL_DB"],$GLOBALS["oConn"]);
        mysql_query('SET NAMES utf8');
        mysql_query('SET SQL_MODE="MYSQL40"');
    }
     
    initDb();
    Fonction q
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function q($query, $appli='truc', $assoc=1) 
    {
        if($appli == 'truc') 
        {
            //mysql_close($GLOBALS["conn_mysql"]);
            $GLOBALS["oConn"] = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
            mysql_select_db($GLOBALS["SQL_DB"],$GLOBALS["oConn"]);
            mysql_query('SET NAMES utf8');
            $r = mysql_query($query, $GLOBALS["oConn"]);
        } else {
            //mysql_close($GLOBALS["oConn"]);
            $GLOBALS['conn_mysql'] = mysql_connect($GLOBALS["DB_SERVER"], $GLOBALS["DB_USERNAME"], $GLOBALS["DB_PASSWORD"]);
    	mysql_select_db($GLOBALS["DB_DBNAME"],$GLOBALS["conn_mysql"]);
            mysql_query('SET NAMES utf8');
            $r = mysql_query($query, $GLOBALS["conn_mysql"]);
        }
        ...
    }
    Qu'est-ce que vous en pensez ? Il ne ferme jamais les connexions, comment ça se fait qu'il n'y en ait qu'une ?

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    Quelques informations supplémentaires, mais que je n'arrive pas forcément à interpréter ...
    Lorsque je lance ma page PHP dans mon navigateur, je regarde la partie "Session monitor" dans TOAD for MySQL pour y suivre les processus, et il n'y en a qu'un seul qui s'affiche (en plus de ma connexion TOAD vers la BDD). Par contre il y a une colonne de résultat qui s'appelle "idle", et ce chiffre monte jusqu'à 13, mais je ne sais pas à quoi correspond ce chiffre

    quelqu'un pourrait éclairer ma lanterne ?

  5. #5
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    j'ai créé un fichier de test avec simplement le code ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    $GLOBALS['SQL_ADDRESS']='mon_host';
    $GLOBALS['SQL_LOGIN']='mon_login';
    $GLOBALS['SQL_PASSWORD']='mon_password';
    $GLOBALS['SQL_DB']='ma_base';
     
    $connect = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
    $db = mysql_select_db($GLOBALS['SQL_DB']);
    echo "<u>1ère connexion</u><br>"; 
    $res_process = mysql_query('SHOW STATUS LIKE \'Connections\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    $res_process = mysql_query('SHOW STATUS LIKE \'THREAD%\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
     
    $connect2 = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
    $db2 = mysql_select_db($GLOBALS['SQL_DB']);
    echo "<u>2ème connexion</u><br>"; 
    $res_process = mysql_query('SHOW STATUS LIKE \'Connections\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    $res_process = mysql_query('SHOW STATUS LIKE \'THREAD%\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
     
    $connect3 = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
    $db3 = mysql_select_db($GLOBALS['SQL_DB']);
    echo "\t<u>3ème connexion</u><br>"; 
    $res_process = mysql_query('SHOW STATUS LIKE \'Connections\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    $res_process = mysql_query('SHOW STATUS LIKE \'THREAD%\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
     
    $connect4 = mysql_connect($GLOBALS["SQL_ADDRESS"],$GLOBALS["SQL_LOGIN"],$GLOBALS["SQL_PASSWORD"]);
    $db4 = mysql_select_db($GLOBALS['SQL_DB']);
    echo "<u>4ème connexion</u><br>"; 
    $res_process = mysql_query('SHOW STATUS LIKE \'Connections\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    $res_process = mysql_query('SHOW STATUS LIKE \'THREAD%\'');
    while ($row_status = mysql_fetch_array($res_process)) {
    	print_r($row_status);echo "<br>";
    }
    mysql_free_result($res_process);
    et ça me donne comme résultat :
    1ère connexion
    Array ( [0] => Connections [Variable_name] => Connections [1] => 70765 [Value] => 70765 )
    Array ( [0] => Threads_cached [Variable_name] => Threads_cached [1] => 6 [Value] => 6 )
    Array ( [0] => Threads_connected [Variable_name] => Threads_connected [1] => 2 [Value] => 2 )
    Array ( [0] => Threads_created [Variable_name] => Threads_created [1] => 39 [Value] => 39 )
    Array ( [0] => Threads_running [Variable_name] => Threads_running [1] => 2 [Value] => 2 )
    2ème connexion
    Array ( [0] => Connections [Variable_name] => Connections [1] => 70765 [Value] => 70765 )
    Array ( [0] => Threads_cached [Variable_name] => Threads_cached [1] => 6 [Value] => 6 )
    Array ( [0] => Threads_connected [Variable_name] => Threads_connected [1] => 2 [Value] => 2 )
    Array ( [0] => Threads_created [Variable_name] => Threads_created [1] => 39 [Value] => 39 )
    Array ( [0] => Threads_running [Variable_name] => Threads_running [1] => 2 [Value] => 2 )
    3ème connexion
    Array ( [0] => Connections [Variable_name] => Connections [1] => 70765 [Value] => 70765 )
    Array ( [0] => Threads_cached [Variable_name] => Threads_cached [1] => 6 [Value] => 6 )
    Array ( [0] => Threads_connected [Variable_name] => Threads_connected [1] => 2 [Value] => 2 )
    Array ( [0] => Threads_created [Variable_name] => Threads_created [1] => 39 [Value] => 39 )
    Array ( [0] => Threads_running [Variable_name] => Threads_running [1] => 2 [Value] => 2 )
    4ème connexion
    Array ( [0] => Connections [Variable_name] => Connections [1] => 70765 [Value] => 70765 )
    Array ( [0] => Threads_cached [Variable_name] => Threads_cached [1] => 6 [Value] => 6 )
    Array ( [0] => Threads_connected [Variable_name] => Threads_connected [1] => 2 [Value] => 2 )
    Array ( [0] => Threads_created [Variable_name] => Threads_created [1] => 39 [Value] => 39 )
    Array ( [0] => Threads_running [Variable_name] => Threads_running [1] => 2 [Value] => 2 )

    ça vous parle plus peut-être..pas à moi en tous cas pour l'instant

    [EDIT]je vais poster un message sur le forum MySQL, ça sera peut-être plus approprié..[/EDIT]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister le nombre de connexions
    Par ninikkhuet dans le forum MySQL
    Réponses: 1
    Dernier message: 21/04/2010, 15h35
  2. Mysql Configuration nombre de connexion aux bases de données
    Par Thierry8 dans le forum Installation
    Réponses: 2
    Dernier message: 15/09/2005, 20h54
  3. Limiter de nombre de connexions simultanées
    Par Drahu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/09/2005, 11h43
  4. limiter le nombre de connexion VB-Oracle
    Par lonestar dans le forum Oracle
    Réponses: 12
    Dernier message: 05/08/2005, 12h29
  5. Paramétrer le nombre de connexion sur mon serveur Mysql
    Par Zerga dans le forum Installation
    Réponses: 2
    Dernier message: 12/12/2003, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo