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 :

Historiser le nombre de connexions simultanées


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14
    Par défaut Historiser le nombre de connexions simultanées
    Bonjour le forum,

    Voilà j'ai un site sous OVH mutualisé dont les stats mensuelles sont à peu près celles-ci :

    - Visites : 336 660
    - Visiteurs : 92 770
    - Pages vues : 1 798 408

    Je souhaite changer d'hebergeur et passer chez infomaniak (prix et quantité de trafic). Le "problème" est que le nombre de connexions simultanées à MySQL chez Infomaniak est de 38 alors qu'il est de 50 chez OVH.

    Malheureusement, aujourd'hui je ne suis pas capable de savoir quel est en moyenne le nombre de connexions simultanées à ma base, car si je fais un SHOW STATUS, ca me donne (il me semble) les statistiques pour tout le serveur mutualisé.

    Ma question est donc: est-il possible d'écrire un petit script php permettant de connaitre le max de connexions simultanées à ma base sur une journée, pour voir si je pourrais changer d'hebergement sans problème.

    Merci d'avance aux talentueux programmeurs

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    il y a toujours moyen d'ajouter un INSERT dans l'ensemble des pages contenant au moins une requête MySQL. Bien sûr, plus longtemps vous laisserez cet INSERT, plus vous aurez d'information pour savoir la moyenne de connexions simultanées à votre base... par contre, une requête MySQL supplémentaire (fichier local plus pratique? session?) va surcharger votre site donc n'en abusez pas.

    Si vous avez besoin de la structure d'une telle table, je suis disponible.

    Cordialement,
    DaRiaN.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14
    Par défaut
    Bonsoir DaRiaN,

    Je n'ai pas bien compris la technique mais je suis preneur.
    Chaque page du site génère une requete. En fait, le chargement d'une page commence par l'execution d'un fichier qui execute plusieurs requetes puis ferme la connexion.
    Ensuite j'exploite les résultats des requetes et j'affiche la page.

    Pas de souci pour la charge car je peux très bien créer une base supplémentaire rien que pour y stocker cette INSERT.

    En revanche, quand tu dis "plus vous laisserez longtemps", tu veux dire par là qu'il vaut mieux que je garde les enregistrements de cet INSERT plus d'une journée ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Quand je dis "plus longtemps mieux c'est", comprenez par là qu'une moyenne représente mieux une moyenne en grand nombre, donc plus vous aurez d'information, plus le résultat sera précis.

    Je finis mon travail et je vous livre un petit exemple.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Très rapidement, l'installation d'un INSERT dans votre fonction permettant la connexion au serveur MySQL, c'est juste un exemple pour vous mettre sur la voie.

    Là, on se sert du module mysql de PHP mais j'aurais très bien pu utiliser mysqli ou faire une classe, mais bon, on va pas y passer 3 jours. Dans cet exemple, on utilise la base principale, celle qui est utilisée le plus souvent. Donc on créé en premier lieux, la table `stats` :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE stats 
    ( 
    moment DECIMAL(14,4) NOT NULL, 
    INDEX(moment)
    );
    Après avoir fait ça, on modifie la fonction de connexion comme celle-ci :

    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
      function cSQL($db, $pass, $user = 'root', $ip = 'localhost')
      {
     
        $con = @mysql_connect($ip, $user, $pass);
     
        if (!$con) exit('Erreur : '.mysql_error());
        if (!mysql_select_db($db)) exit('Erreur : '.mysql_error());	
     
        /* mettez ici le nom de la base principale,
           celle qui est demandée le plus souvent et qui contient la table `stats` */
     
        if ($db == 'test')
        {
     
          /* en PHP5 c'est plus facile
             $moment = microtime(TRUE); */
     
          list($ms, $sec) = explode(' ', microtime());
          $moment = $sec+$ms;	
     
          if (!mysql_query('INSERT INTO `stats` (`moment`) VALUES ('.$moment.')'))
          exit('Erreur : '.mysql_error());
     
        }
     
        return $con;
     
      }
    C'est pas la meilleure fonction procédurière de connexion avec le module mysql mais cela conviendra pour l'exemple. Remarquez que vous devez absolument spécifier le nom de la base principale qui contient la table `stats`, sinon aucune insertion ne sera effectuée.

    Voilà, après avoir implanté cela et en patientant un peu, vous pourrez décortiquer les résultats sans trop de mal.

    Edit : Du reste, si ce n'est pas assez précis, y a toujours moyen de récupérer la date de debut et de fin de la connexion (approx.). Avec ces deux valeurs, on pourra s'assurer du total de connexions parallèles (avec un between par exemple).

    Vous dites que c'est possible puisque vous récupérez d'abord tous les résultats, donc un simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      $debut = microtime(TRUE);
     
      $con = @mysql_connect($ip, $user, $pass);
     
      // placez ici toutes vos requêtes
     
      $fin = microtime(TRUE);
     
      mysql_query('INSERT INTO `stats` (`debut`,`fin`) VALUES ('.$debut.', '.$fin.')');
     
      mysql_close();
    La structure de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE stats 
    ( 
    debut DECIMAL(14,4) NOT NULL, 
    fin DECIMAL(14,4) NOT NULL, 
    INDEX(debut, fin)
    );
    Enfin, voilà, en vrac quelques exemples a creuser.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14
    Par défaut
    Merci pour votre aide DaRiaN. Je vais regarder çela de plus près et voir ce que ça me retourne comme résultat.

Discussions similaires

  1. Nombre de connexions simultanées
    Par khokho dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 30/01/2007, 00h30
  2. Réponses: 3
    Dernier message: 10/01/2007, 18h10
  3. Nombre de connexion simultanée à la base
    Par ducker88 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/06/2006, 19h46
  4. Réponses: 5
    Dernier message: 17/05/2006, 09h19
  5. Limiter de nombre de connexions simultanées
    Par Drahu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/09/2005, 11h43

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