<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysqli.quickstart.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'mysqli.quickstart.connections.php',
    1 => 'Connexions',
    2 => 'Connexions',
  ),
  'up' => 
  array (
    0 => 'mysqli.quickstart.php',
    1 => 'Guide de d&eacute;marrage rapide',
  ),
  'prev' => 
  array (
    0 => 'mysqli.quickstart.dual-interface.php',
    1 => 'Interface proc&eacute;durale et orient&eacute;e objet',
  ),
  'next' => 
  array (
    0 => 'mysqli.quickstart.statements.php',
    1 => 'Ex&eacute;cution des requ&ecirc;tes',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/mysqli/quickstart.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqli.quickstart.connections" class="section">
  <h2 class="title">Connexions</h2>
  <p class="para">
   Le serveur MySQL supporte l&#039;utilisation de différentes couches de transport
   pour les connexions. Les connexions peuvent utiliser TCP/IP, les sockets
   de domaine Unix ou les pipes nommés Windows.
  </p>
  <p class="para">
   Le nom d&#039;hôte <code class="literal">localhost</code> a une signification particulière.
   Il est lié à l&#039;utilisation des sockets de domaine Unix. 
   Pour ouvrir une connexion TCP/IP sur l&#039;hôte local, <code class="literal">127.0.0.1</code> doit être utilisé
   au lieu de <code class="literal">localhost</code>.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Signification spéciale de localhost</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"localhost"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">host_info </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"127.0.0.1"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"database"</span><span style="color: #007700">, </span><span style="color: #0000BB">3306</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">host_info </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Localhost via UNIX socket
127.0.0.1 via TCP/IP
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <strong>Paramètres par défaut d&#039;une connexion</strong>
  </p>
  <p class="para">
   Suivant la fonction de connexion utilisée, des paramètres peuvent être omis.
   Si un paramètre n&#039;est pas fourni, alors l&#039;extension tentera d&#039;utiliser les valeurs
   par défaut définies dans le fichier de configuration de PHP.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Paramètres par défaut</strong></p>
    <div class="example-contents">
<div class="inicode"><pre class="inicode">mysqli.default_host=192.168.2.27
mysqli.default_user=root
mysqli.default_pw=&quot;&quot;
mysqli.default_port=3306
mysqli.default_socket=/tmp/mysql.sock</pre>
</div>
    </div>

   </div>
  </p>
  <p class="para">
   Ces valeurs de paramètres sont alors passées à la bibliothèque cliente
   utilisée par l&#039;extension. Si la bibliothèque cliente détecte un paramètre
   vide ou non défini, alors elle utilisera les valeurs par défaut internes à
   la bibliothèque.
  </p>
  <p class="para">
   <strong>Valeurs par défaut internes à la bibliothèque pour la connexion</strong>
  </p>
  <p class="para">
   Si la valeur de l&#039;hôte n&#039;est pas définie ou est vide, alors la bibliothèque cliente
   utilisera par défaut une connexion de type socket Unix sur <code class="literal">localhost</code>.
   Si le socket n&#039;est pas défini ou vide, et qu&#039;une connexion de type socket Unix est
   demandée, alors une connexion au socket par défaut <code class="literal">/tmp/mysql.sock</code>
   sera tentée.
  </p>
  <p class="para">
   Sous les systèmes Windows, le nom d&#039;hôte <code class="literal">.</code> est interprété
   par la bibliothèque cliente comme une tentative d&#039;ouvrir un tube nommé Windows
   pour la connexion. Dans ce cas, le paramètre socket est interprété comme
   un tube nommé. S&#039;il n&#039;est pas fourni ou vide, alors le socket (tube nommé)
   vaudra par défaut <code class="literal">\\.\pipe\MySQL</code>.
  </p>
  <p class="para">
   Si ni un socket de domaine Unix, ni un tube nommé Windows n&#039;est fourni, une connexion
   de base sera établie et si la valeur du port n&#039;est pas définie, la bibliothèque
   utilisera le port <code class="literal">3306</code>.
  </p>
  <p class="para">
   La bibliothèque <a href="mysqlnd.overview.php" class="link">mysqlnd</a> et la bibliothèque
   cliente MySQL (libmysqlclient) implémentent la même logique pour déterminer les valeurs
   par défaut.
  </p>
  <p class="para">
   <strong>Options de connexion</strong>
  </p>
  <p class="para">
   Des options de connexion sont disponibles pour, par exemple, définir
   des commandes d&#039;initialisation à exécuter lors de la connexion, ou
   pour demander l&#039;utilisation d&#039;un jeu de caractères particulier. Les options
   de connexion doivent être définies avant la connexion au réseau.
  </p>
  <p class="para">
   Pour définir une option de connexion, l&#039;opération de connexion doit
   être effectuée en 3 étapes : création d&#039;un gestionnaire de connexion avec
   <span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span> ou <span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::__construct()</a></span>, 
   définition des options demandées en utilisant
   <span class="methodname"><a href="mysqli.options.php" class="methodname">mysqli::options()</a></span>, et connexion au réseau avec
   <span class="methodname"><a href="mysqli.real-connect.php" class="methodname">mysqli::real_connect()</a></span>.
  </p>
  <p class="para">
   <strong>File d&#039;attente de connexion</strong>
  </p>
  <p class="para">
   L&#039;extension mysqli supporte les connexions persistantes aux bases de données,
   qui sont des connexions spéciales. Par défaut, chaque connexion à une
   base de données ouverte par un script est soit explicitement close par
   l&#039;utilisateur durant l&#039;exécution, ou soit libérée automatiquement à la fin
   du script. Ce n&#039;est pas le cas d&#039;une connexion persistante. En effet,
   elle sera placée dans une file d&#039;attente pour une ré-utilisation future,
   si une connexion au même serveur, utilisant le même nom d&#039;utilisateur, le
   même mot de passe, le même socket, le même port, ainsi que la même base de données
   est ouverte. Cette ré-utilisation permet d&#039;alléger la charge indue par les
   connexions.
  </p>
  <p class="para">
   Chaque processus PHP utilise sa propre file d&#039;attente de connexions mysqli.
   Suivant le modèle de déploiement du serveur web, un processus PHP peut
   servir une ou plusieurs requêtes. Toutefois, une connexion mise en file d&#039;attente
   peut être utilisée par un ou plusieurs scripts par la suite.
  </p>
  <p class="para">
   <strong>Les connexions persistantes</strong>
  </p>
  <p class="para">
   Si une connexion persistante pour une combinaison d&#039;hôte, de nom d&#039;utilisateur,
   de mot de passe, de socket, de port et de base de données inutilisée ne peut
   être trouvée dans la file d&#039;attente de connexion, alors mysqli ouvrira une nouvelle
   connexion. L&#039;utilisation des connexions persistantes peut être activée ou désactivée
   en utilisant la directive PHP
   <a href="mysqli.configuration.php#ini.mysqli.allow-persistent" class="link">mysqli.allow_persistent</a>.
   Le nombre total de connexions ouvertes par un script peut être limité avec
   la directive <a href="mysqli.configuration.php#ini.mysqli.max-links" class="link">mysqli.max_links</a>.
   Le nombre maximal de connexions persistantes par processus PHP peut être
   restreint avec la directive <a href="mysqli.configuration.php#ini.mysqli.max-persistent" class="link">mysqli.max_persistent</a>.
   Veuillez noter que le serveur web peut engendrer plusieurs processus PHP.
  </p>
  <p class="para">
   Une plainte courante contre les connexions persistantes est que leur
   statut n&#039;est pas réinitialisé avant la ré-utilisation. Par exemple,
   les transactions ouvertes et non terminées ne sont pas automatiquement
   annulées. Mais aussi, les modifications autorisées survenant entre le moment
   où la connexion est mise en file d&#039;attente et sa ré-utilisation ne seront
   pas prises en compte. Ce comportement peut être vu comme un effet de
   bord non désiré. Au contraire, le nom <code class="literal">persistent</code>
   peut être compris comme une promesse sur le fait que le statut persiste
   réellement.
  </p>
  <p class="para">
   L&#039;extension mysqli supporte deux interprétations d&#039;une connexion persistante :
   statut persistant, et un statut réinitialisé avant ré-utilisation. Par
   défaut, il sera réinitialisé. Avant qu&#039;une connexion persistante ne soit
   réutilisée, l&#039;extension mysqli appelle implicitement la fonction
   <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> pour réinitialiser le statut.
   La connexion persistante apparaît à l&#039;utilisateur comme si elle venait
   juste d&#039;être ouverte. Aucune trace d&#039;une utilisation précédente ne
   sera visible.
  </p>
  <p class="para">
   La fonction <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> est une opération couteuse.
   Pour de meilleures performances, les utilisateurs peuvent vouloir re-compiler
   l&#039;extension avec le drapeau de compilation <strong><code>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</code></strong>.
  </p>
  <p class="para">
   Ainsi, il sera laissé à l&#039;utilisateur le choix entre un comportement sécurisé
   et une performance optimisée. Les deux ont comme but l&#039;optimisation. Pour
   une utilisation plus simple, le comportement sécurisé a été placé
   par défaut au détriment d&#039;une performance maximale.
  </p>
  <p class="para">
   <strong>Voir aussi</strong>
  </p>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span></li>
    <li><span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::__construct()</a></span></li>
    <li><span class="methodname"><a href="mysqli.options.php" class="methodname">mysqli::options()</a></span></li>
    <li><span class="methodname"><a href="mysqli.real-connect.php" class="methodname">mysqli::real_connect()</a></span></li>
    <li><span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span></li>
    <li><a href="mysqli.get-host-info.php" class="link">$mysqli::host_info</a></li>
    <li><a href="mysqli.configuration.php" class="link">Les options de configuration MySQLi</a></li>
    <li><a href="features.persistent-connections.php" class="link">Les connexions persistantes aux bases de données</a></li>
   </ul>
  </p>
 </div><?php manual_footer($setup); ?>