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 :

Test si une connexion MySQL est déjà active [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut Test si une connexion MySQL est déjà active
    Bonjour à tous,

    Je souhaite pouvoir tester si je suis déjà connecter à MySQL avant de lancer une nouvelle connexion
    J'ai plusieurs pages PHP imbriquées et au bout d'un moment cela devient difficile de savoir si je suis déjà connectée à la base
    Qui aurait une solution pour faire un test avant de lancer une nouvelle connexion qui se solde par un défaut si je suis déjà connectée
    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonjour, tu utilise quelle fonction(mysqlconnect, mysqli ou PDO) php pour te connecter à ta base?
    J'ai un penchant pour la PDO.
    Tu n'as qu'à créer un seul fichier de connexion et l'appeler au debut des tes fichiers de traitement.
    Cordialement.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    On dirait la description du fonctionnement d'un Singleton. Singleton (patron de conception) — Wikipédia
    Tu peux faire une recherche sur "Singleton PDO" sur internet et trouver un certain nombre d'exemple.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    Citation Envoyé par Manequin Voir le message
    Bonjour, tu utilise quelle fonction(mysqlconnect, mysqli ou PDO) php pour te connecter à ta base?
    J'ai un penchant pour la PDO.
    Tu n'as qu'à créer un seul fichier de connexion et l'appeler au debut des tes fichiers de traitement.
    Cordialement.
    j'utilise "mysql_connect"
    Pas de PDO chez FREE

    Je n'ai pas beaucoup d'expérience en la matière
    Si je fais un "mysql_close();" => je ferme la base et rompt la connexion => j'ai juste ? ou je ferme toute les bases seulement ?
    A+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce serait plus simple en nous montrant :
    • où et comment tu te connectes,
    • où et comment tu te déconnectes




    N.B. Pour ma part, même chez Free avec mysql_, je n'ai jamais eu ce souci.

    1. On ouvre la connexion en tout début de script.
    2. On la ferme tout à la fin


    Une fois pour toutes.

  6. #6
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Ma_connection.php
    Function Connect() {
      $server="sql.free.fr";
      $user="xxxx";
      $pass="xxxxxx";
      $connect = mysql_connect($server, $user, $pass);
      return $connect;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    include("Ma_connection.php");  
    $link=Connect();
    mysql_select_db('la_base',$link);
    $sql = "SELECT id FROM adresse";
    $reponse=mysql_query($sql) or die( 'MySQL SELECT ERROR: '. mysql_error());
    .....
    .....
    mysql_close();
    On m'a toujours dit de ne pas laisser une base ouverte

  7. #7
    Invité
    Invité(e)
    Par défaut
    1- Ton fichier contient une fonction.
    Il faut l'inclure une seule fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once("Ma_connection.php");
    Si tu avais montré le message d'erreur, on te l'aurait dit tout de suite.

    Tu peux aussi modifier le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ( !function_exists('Connect')) {
       function Connect() {
    ...
       }
    }

    2- mysql_close(); se met une seule fois, en fin de script (après </html>)
    Dernière modification par Invité ; 27/06/2018 à 18h40.

  8. #8
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    Mon site est ouvert constamment et laisser la base ouverte continuellement ......
    Les pages PHP sont imbriquées et posent donc le pb de fermeture de la base

  9. #9
    Invité
    Invité(e)
    Par défaut
    Non.

    Il n'y a à chaque fois qu'une seule "page".
    Elle est constituée d'un fichier "maître", dans lequel peuvent être inclus d'autres fichier/"script".

    Connection et fermeture se font dans le fichier "maître".
    Et dans les fichiers indépendants (appelés via Ajax, notamment)

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu n'as pas besoin de fermer les connexions manuellement, PHP le fait pour toi à la fin du script. Fermer la connexion toi-même permet de libérer de la mémoire et des ressources pour le reste du traitement.
    Les connexions et les jeux de résultats ouverts de facçon non persistents sont automatiquement détruits lorsqu'un script PHP termine son exécution. Aussi, le fait de fermer une connexion et libérer les résultats étant optionnel, le fait de le faire explicitement est néanmoins vivement recommandé. Ceci va retourner les ressources immédiatement à PHP et à MySQL, ce qui va améliorer les performance.
    PHP: mysql_close - Manual
    C'est une bonne idée de fermer la connexion manuellement si tu as des traitements à la fin de ton script qui ne nécessitent pas la connexion à base.
    Toutefois, si la fermeture de la connexion est la dernière chose que tu fais dans ton script, je ne pense pas que ça change grand chose.

    Au passage, si tu utilises les fonctions mysql_xxxx, tu utilises l'API mysql qui est obsolète depuis PHP 5.5 et supprimée depuis PHP 7.0. Donc plutôt que te prendre le chou avec les fermetures de connexion, peut-être devrais-tu plutôt t'intéresser à une migration vers PDO
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Invité
    Invité(e)
    Par défaut
    @Celira
    PDO n'est pas disponible chez Free.

    Quant à mysqli_, je n'ai pas testé.
    À voir, donc.

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    @Celira
    PDO n'est pas disponible chez Free.
    Effectivement, ça a été dit au début de la discussion. Ils attendent quoi chez Free, que PHP 5 soit complètement abandonné ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je viens de rouvrir mon (vieux) compte free.

    phpinfo indique :
    • PHP Version 4.4.3-dev !
    • mysql 5.0.77

    Pas de trace de PDO...

    ... mais c'est "gratuit"...
    Alors qu'un hébergement chez un F.A.I. digne de ce nom vaut environ 35-45 €/an... (voir offre "Perso" chez OVH)
    Tu parles d'une "économie" !



    N.B. Affichage de phpinfo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo phpinfo(); ?>
    Dernière modification par Invité ; 28/06/2018 à 14h09.

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si c'est en PHP 4, c'est un peu normal que tu n'ais pas PDO (c'est un peu comme dire qu'il n'y avais pas de congélateur à Versailles sous Louis XIV)
    Mais ya un moyen de passer en PHP 5 en mettant un .htaccess je crois bien. (évidemment, c'est écrit nulle part dans la doc officielle, mais ça se trouve en cherchant sur Internet)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  15. #15
    Invité
    Invité(e)
    Par défaut
    M'en fiche... Tout mes sites sont sur OVH depuis belle lurette (et gai luron) !

    Mais si on se réfère à ce lien, PHP 5.6.8 est disponible depuis 2015.
    Pour cela, ajoutez les lignes suivantes au fichier .htaccess à la racine de votre hébergement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <IfDefine Free>
    php56 1
    </IfDefine>
    phpInfo indique alors :
    • PHP Version 5.6.8
    • myqsl ...
    • mysqli ...
    • PDO (!) - il se pourrait qu'il soit installé, finalement ! *

    * Mais bon. Je n'ai pas testé... et pas vraiment l'intention de le faire.
    Dernière modification par Invité ; 28/06/2018 à 14h58.

  16. #16
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    C'est vrai que la version perso est à 3.59€/mois .....
    Surtout qu'ils viennent de me bloquer mon compte chez Free pour motif 19Go de webcam
    Une usine à gaz pour ré-activer le compte et il faut faire des courbettes pour récupérer ma BDD

    Pas trop compliqué de modifier en PDO ?
    A+

  17. #17
    Invité
    Invité(e)
    Par défaut
    C'est vrai qu'en plus, tu enregistres beaucoup de vidéos....

    Donc, n'hésite pas : vrai hébergeur, vrai hébergement, vrai nom de domaine !

    Quant à PDO, une fois qu'on a compris le principe, ça va mieux :


  18. #18
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Non.

    Il n'y a à chaque fois qu'une seule "page".
    Elle est constituée d'un fichier "maître", dans lequel peuvent être inclus d'autres fichier/"script".

    Connection et fermeture se font dans le fichier "maître".
    Et dans les fichiers indépendants (appelés via Ajax, notamment)
    Bonjour,

    Comme vous me l'avez indiqué, j'ai inséré au niveau de la page "index" entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    </head>
    <?php 
    include("Connection.php"); 
    $link=Connect();
    mysql_select_db('ruches_montminoises',$link); 
    ?>  
    <body>
    Et à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    </html>
    <?php mysql_close(); ?>
    Dans cette page index, je lance en POST <ASIDE> une autre page PHP "principale" (sans acces à la base qui elle même lance en POST également en <ASIDE> une page "menu" qui fait appel à la base
    Or au lancement de la page "principale"
    "Warning: mysql_query(): A link to the server could not be established in /var/www/sdb/9/5/ruches.montminoises/Menu.php on line 26
    MySQL SELECT ERROR: "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "SELECT * FROM xxxx";
    //Ligne 26:
    $reponse=mysql_query($sql) or die( 'MySQL SELECT ERROR: '. mysql_error());
    Je suis perdue !!!!
    A l'aide

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Généralement, les traitements se font avant même l'envoi de code HTML.
    Donc, AVANT le <DOCTYPE>.

    Et les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $link=Connect();
    mysql_select_db('ruches_montminoises',$link);
    devrait (à mon avis) être DANS le fichier Connection.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    include_once("Connection.php"); 
    ?> 
    <!doctype html>
    ....
    Ensuite... vérifie que tu n'as pas mis de mysql_close() ailleurs.


    N.B. Il n'y a pas de "page PHP "principale"".
    PHP sert à construire le code qui sera affiché par le navigateur.

    Ce que j'ai appelée fichier "maître", c'est le fichier dans lequel sont (éventuellement) inclus tous les autres scripts, nécessaires à la création de LA page à afficher par le navigateur.

    Ce fichier a :
    • un début : la première ligne d'instruction
    • et une fin : la dernière ligne d'instruction

    Ca n'a rien de sorcier ni mystérieux...
    Dernière modification par Invité ; 04/07/2018 à 18h53.

  20. #20
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    J'ai fait comme tu l'as écrit

    Tout est OK
    Encore merci pour l'aide
    Estelle

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

Discussions similaires

  1. est il possible une connexion MySQL et VB6.0?
    Par solaar dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/12/2008, 13h20
  2. [C#] Teste d'une connexion à une DB
    Par Goldenkiller dans le forum Accès aux données
    Réponses: 6
    Dernier message: 09/01/2007, 08h38
  3. [C#] Comment savoir si une connexion SQL est disponible ?
    Par mister3957 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 19/10/2006, 10h53
  4. Realiser une connexion mysql et execute une requete
    Par Taz_8626 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2006, 10h52
  5. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48

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