<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'mysqli.quickstart.connections.php',
    1 => 'Conexiones',
    2 => 'Conexiones',
  ),
  'up' => 
  array (
    0 => 'mysqli.quickstart.php',
    1 => 'Gu&iacute;a de inicio r&aacute;pido',
  ),
  'prev' => 
  array (
    0 => 'mysqli.quickstart.dual-interface.php',
    1 => 'Interfaces procedimentales y orientadas a objetos',
  ),
  'next' => 
  array (
    0 => 'mysqli.quickstart.statements.php',
    1 => 'Ejecuci&oacute;n de consultas',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Conexiones</h2>
  <p class="para">
   El servidor MySQL soporta el uso de diferentes capas de transporte
   para las conexiones. Las conexiones pueden utilizar TCP/IP, los sockets
   de dominio Unix o los tubos nombrados de Windows.
  </p>
  <p class="para">
   El nombre de host <code class="literal">localhost</code> tiene un significado especial.
   Está vinculado al uso de los sockets de dominio Unix.
   Para abrir una conexión TCP/IP en el host local, <code class="literal">127.0.0.1</code> debe ser utilizado
   en lugar de <code class="literal">localhost</code>.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Significado especial 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>El ejemplo anterior mostrará:</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>Parámetros por omisión de una conexión</strong>
  </p>
  <p class="para">
   Dependiendo de la función de conexión utilizada, algunos parámetros pueden ser omitidos.
   Si un parámetro no es proporcionado, entonces la extensión intentará utilizar los valores
   por omisión definidos en el archivo de configuración de PHP.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 Parámetros por omisión</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">
   Estos valores de parámetros son entonces pasados a la biblioteca cliente
   utilizada por la extensión. Si la biblioteca cliente detecta un parámetro
   vacío o no definido, entonces utilizará los valores por omisión internos a
   la biblioteca.
  </p>
  <p class="para">
   <strong>Valores por omisión internos a la biblioteca para la conexión</strong>
  </p>
  <p class="para">
   Si el valor del host no está definido o es vacío, entonces la biblioteca cliente
   utilizará por omisión una conexión de tipo socket Unix en <code class="literal">localhost</code>.
   Si el socket no está definido o es vacío, y se solicita una conexión de tipo socket Unix, entonces se intentará una conexión al socket por omisión <code class="literal">/tmp/mysql.sock</code>.
  </p>
  <p class="para">
   En los sistemas Windows, el nombre de host <code class="literal">.</code> es interpretado
   por la biblioteca cliente como un intento de abrir un tubo nombrado de Windows
   para la conexión. En este caso, el parámetro socket es interpretado como
   un tubo nombrado. Si no es proporcionado o está vacío, entonces el socket (tubo nombrado)
   valdrá por omisión <code class="literal">\\.\pipe\MySQL</code>.
  </p>
  <p class="para">
   Si ni un socket de dominio Unix ni un tubo nombrado de Windows es proporcionado, se establecerá una conexión básica y si el valor del puerto no está definido, la biblioteca
   utilizará el puerto <code class="literal">3306</code>.
  </p>
  <p class="para">
   La biblioteca <a href="mysqlnd.overview.php" class="link">mysqlnd</a> y la biblioteca
   cliente MySQL (libmysqlclient) implementan la misma lógica para determinar los valores
   por omisión.
  </p>
  <p class="para">
   <strong>Opciones de conexión</strong>
  </p>
  <p class="para">
   Las opciones de conexión están disponibles para, por ejemplo, definir
   comandos de inicialización a ejecutar durante la conexión, o
   para solicitar el uso de un juego de caracteres específico. Las opciones
   de conexión deben ser definidas antes de la conexión a la red.
  </p>
  <p class="para">
   Para definir una opción de conexión, la operación de conexión debe
   ser realizada en 3 pasos: creación de un manejador de conexión con
   <span class="function"><a href="mysqli.init.php" class="function">mysqli_init()</a></span> o <span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::__construct()</a></span>,
   definición de las opciones solicitadas utilizando
   <span class="methodname"><a href="mysqli.options.php" class="methodname">mysqli::options()</a></span>, y conexión a la red con
   <span class="methodname"><a href="mysqli.real-connect.php" class="methodname">mysqli::real_connect()</a></span>.
  </p>
  <p class="para">
   <strong>Cola de conexión</strong>
  </p>
  <p class="para">
   La extensión mysqli soporta las conexiones persistentes a la base de datos,
   que son conexiones especiales. Por omisión, cada conexión a una
   base de datos abierta por un script es cerrada explícitamente por
   el usuario durante la ejecución, o liberada automáticamente al final
   del script. Esto no es el caso de una conexión persistente. En efecto,
   será colocada en una cola para una reutilización futura,
   si una conexión al mismo servidor, utilizando el mismo nombre de usuario, la
   misma contraseña, el mismo socket, el mismo puerto, así como la misma base de datos
   es abierta. Esta reutilización permite aligerar la carga indebida por las
   conexiones.
  </p>
  <p class="para">
   Cada proceso PHP utiliza su propia cola de conexiones mysqli.
   Dependiendo del modelo de despliegue del servidor web, un proceso PHP puede
   servir una o varias peticiones. Sin embargo, una conexión en cola
   puede ser utilizada por uno o varios scripts posteriormente.
  </p>
  <p class="para">
   <strong>Las conexiones persistentes</strong>
  </p>
  <p class="para">
   Si una conexión persistente para una combinación de host, nombre de usuario,
   contraseña, socket, puerto y base de datos no utilizada no puede
   ser encontrada en la cola de conexión, entonces mysqli abrirá una nueva
   conexión. El uso de las conexiones persistentes puede ser activado o desactivado
   utilizando la directiva PHP
   <a href="mysqli.configuration.php#ini.mysqli.allow-persistent" class="link">mysqli.allow_persistent</a>.
   El número total de conexiones abiertas por un script puede ser limitado con
   la directiva <a href="mysqli.configuration.php#ini.mysqli.max-links" class="link">mysqli.max_links</a>.
   El número máximo de conexiones persistentes por proceso PHP puede ser
   restringido con la directiva <a href="mysqli.configuration.php#ini.mysqli.max-persistent" class="link">mysqli.max_persistent</a>.
   Tenga en cuenta que el servidor web puede generar varios procesos PHP.
  </p>
  <p class="para">
   Una queja común contra las conexiones persistentes es que su estado no es re-initializado antes de la reutilización. Por ejemplo,
   las transacciones abiertas y no terminadas no son automáticamente
   anuladas. Además, las modificaciones autorizadas que ocurren entre el momento
   en que la conexión es colocada en cola y su reutilización no serán tomadas en cuenta. Este comportamiento puede ser visto como un efecto de
   borde no deseado. Por el contrario, el nombre <code class="literal">persistent</code>
   puede ser comprendido como una promesa sobre el hecho de que el estado persiste
   realmente.
  </p>
  <p class="para">
   La extensión mysqli soporta dos interpretaciones de una conexión persistente :
   estado persistente, y un estado re-initializado antes de la reutilización. Por
   omisión, será re-initializado. Antes de que una conexión persistente sea
   reutilizada, la extensión mysqli llama implícitamente a la función
   <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> para re-initializar el estado.
   La conexión persistente aparece al usuario como si acabara de ser abierta. Ninguna
   traza de un uso anterior será visible.
  </p>
  <p class="para">
   La función <span class="methodname"><a href="mysqli.change-user.php" class="methodname">mysqli::change_user()</a></span> es una operación costosa.
   Para mejores rendimientos, los usuarios pueden querer re-compilar
   la extensión con el flag de compilación <strong><code>MYSQLI_NO_CHANGE_USER_ON_PCONNECT</code></strong>.
  </p>
  <p class="para">
   Así, se dejará al usuario la elección entre un comportamiento seguro
   y un rendimiento optimizado. Ambos tienen como objetivo la optimización. Para
   una utilización más sencilla, el comportamiento seguro ha sido colocado
   por omisión en detrimento de un rendimiento máximo.
  </p>
  <p class="para">
   <strong>Ver también</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">Las opciones de configuración MySQLi</a></li>
    <li><a href="features.persistent-connections.php" class="link">Las conexiones persistentes a las bases de datos</a></li>
   </ul>
  </p>
 </div><?php manual_footer($setup); ?>