<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.dba.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.dba-open.php',
    1 => 'dba_open',
    2 => 'Abre una base de datos DBA',
  ),
  'up' => 
  array (
    0 => 'ref.dba.php',
    1 => 'Funciones de DBA',
  ),
  'prev' => 
  array (
    0 => 'function.dba-nextkey.php',
    1 => 'dba_nextkey',
  ),
  'next' => 
  array (
    0 => 'function.dba-optimize.php',
    1 => 'dba_optimize',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/dba/functions/dba-open.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.dba-open" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">dba_open</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">dba_open</span> &mdash; <span class="dc-title">Abre una base de datos DBA</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.dba-open-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>dba_open</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$path</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$mode</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$handler</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$permission</code><span class="initializer"> = 0644</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$map_size</code><span class="initializer"> = 0</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></span> <code class="parameter">$flags</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="class.dba-connection.php" class="type Dba\Connection">Dba\Connection</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   <span class="function"><strong>dba_open()</strong></span> establece una conexión a
   la base identificada por <code class="parameter">path</code> con el
   modo <code class="parameter">mode</code> y el identificador
   <code class="parameter">handler</code>.
  </p>
 </div>

 <div class="refsect1 parameters" id="refsect1-function.dba-open-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">path</code></dt>
    <dd>
     <span class="simpara">
      Ruta en el sistema de archivos.
     </span>
    </dd>
   
   
    <dt><code class="parameter">mode</code></dt>
    <dd>
     <span class="simpara">
      Puede ser <code class="literal">r</code> para solo lectura, <code class="literal">w</code> para
      lectura/escritura, <code class="literal">c</code> para lectura/escritura y creación si la base no existe,
      y <code class="literal">n</code> para creación, sobrescritura y acceso en lectura/escritura.
      La base de datos se crea en modo BTree; los otros modos (como Hash o Queue) no son soportados.
     </span>
     <span class="simpara">
      Además, se puede elegir el método de bloqueo de la base con el
      carácter siguiente. Utilice <code class="literal">l</code> para bloquear la base con un
      fichero <var class="filename">.lck</var>, o <code class="literal">d</code> para bloquear
      la base misma. Es importante que las aplicaciones utilicen estas
      opciones de manera coherente.
     </span>
     <span class="simpara">
      Si se desea probar la posibilidad de acceso sin esperar la disponibilidad del bloqueo,
      se puede añadir la letra <code class="literal">t</code> como tercer carácter. Cuando se está absolutamente seguro
      de que la base no requiere bloqueo, se puede utilizar el guión <code class="literal">-</code>
      en lugar de <code class="literal">l</code> o <code class="literal">d</code>.
      Cuando no se utiliza ni <code class="literal">d</code>, ni <code class="literal">l</code> ni
      <code class="literal">-</code>, dba bloqueará en modo <code class="literal">d</code>.
     </span>
     <blockquote class="note"><p><strong class="note">Nota</strong>: 
      <p class="para">
       Solo puede haber un tipo de escritura en la base. Cuando se utiliza dba en un servidor web,
       y varias peticiones HTTP realizan escrituras, estas solo pueden realizarse una tras otra. De igual
       manera, la lectura durante la escritura no es posible. La extensión dba utiliza un bloqueo para evitar
       estos problemas. A continuación se muestra la tabla de bloqueo:
       <table class="doctable table">
        <caption><strong>Bloqueo DBA</strong></caption>
        
         <thead>
          <tr>
           <th>ya abierta</th>
           <th><code class="parameter">mode</code> = &quot;rl&quot;</th>
           <th><code class="parameter">mode</code> = &quot;rlt&quot;</th>
           <th><code class="parameter">mode</code> = &quot;wl&quot;</th>
           <th><code class="parameter">mode</code> = &quot;wlt&quot;</th>
           <th><code class="parameter">mode</code> = &quot;rd&quot;</th>
           <th><code class="parameter">mode</code> = &quot;rdt&quot;</th>
           <th><code class="parameter">mode</code> = &quot;wd&quot;</th>
           <th><code class="parameter">mode</code> = &quot;wdt&quot;</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>no abierta</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
           <td>ok</td>
          </tr>

          <tr>
           <td><code class="parameter">mode</code> = &quot;rl&quot;</td>
           <td>ok</td>
           <td>ok</td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
          </tr>

          <tr>
           <td><code class="parameter">mode</code> = &quot;wl&quot;</td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
          </tr>

          <tr>
           <td><code class="parameter">mode</code> = &quot;rd&quot;</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ok</td>
           <td>ok</td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
          </tr>

          <tr>
           <td><code class="parameter">mode</code> = &quot;wd&quot;</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>ilegal</td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
           <td>esperando</td>
           <td><strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></td>
          </tr>

         </tbody>
        
       </table>

       <ul class="simplelist">
        <li>ok: La segunda llamada tiene éxito.</li>
        <li>esperando: La segunda llamada espera a que <span class="function"><a href="function.dba-close.php" class="function">dba_close()</a></span>
         sea llamada por el primer script.</li>
        <li>false: La segunda llamada devuelve <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.</li>
        <li>ilegal: No se deben mezclar las opciones
         <code class="literal">&quot;l&quot;</code> y <code class="literal">&quot;d&quot;</code> para el parámetro
         <code class="parameter">mode</code>.</li>
       </ul>
      </p>
     </p></blockquote>
    </dd>
   
   
    <dt><code class="parameter">handler</code></dt>
    <dd>
     <span class="simpara">
      El nombre del <a href="dba.requirements.php" class="link">gestor</a>
      que debe ser utilizado para acceder a <code class="parameter">path</code>.
      Se pasa a todos los parámetros opcionales dados a
      <span class="function"><strong>dba_open()</strong></span> y puede actuar en su nombre.
      Si el parámetro <code class="parameter">handler</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>,
      entonces se invoca el gestor por defecto.
     </span>
    </dd>
   
   
    <dt><code class="parameter">permission</code></dt>
    <dd>
     <span class="simpara">
      Parámetro opcional de tipo <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> que se pasa al controlador. Tiene el mismo significado que
      el parámetro <code class="parameter">permissions</code> de la función <span class="function"><a href="function.chmod.php" class="function">chmod()</a></span>,
      y tiene un valor por omisión de <code class="literal">0644</code>.
     </span>
     <span class="simpara">
      Los controladores <code class="literal">db1</code>, <code class="literal">db2</code>,
      <code class="literal">db3</code>, <code class="literal">db4</code>, <code class="literal">dbm</code>,
      <code class="literal">gdbm</code>,
      Los controladores <code class="literal">ndbm</code> y <code class="literal">lmdb</code> soportan el
      parámetro <code class="parameter">permission</code>.
     </span>
     <span class="simpara">
      El controlador <code class="literal">lmdb</code> soporta dos parámetros adicionales.
      El primero permite definir el <code class="literal">$filemode</code>
      (ver descripción anterior), y el segundo permite definir la
      <code class="literal">$mapsize</code>, cuyo valor debería ser un múltiplo del tamaño de página del sistema operativo,
      o cero para utilizar la mapsize por defecto.
      El parámetro <code class="literal">$mapsize</code> es soportado a partir de
      PHP 7.3.14 y 7.4.2, respectivamente.
     </span>
    </dd>
   
   
    <dt><code class="parameter">map_size</code></dt>
    <dd>
     <span class="simpara">
      Parámetro opcional de tipo <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> que se pasa al controlador. Su valor debe ser un múltiplo del
      tamaño de página del sistema operativo, o cero para utilizar el tamaño de mappage por defecto.
     </span>
     <span class="simpara">
      Solo el controlador <code class="literal">lmdb</code> acepta el parámetro <code class="parameter">map_size</code>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">flags</code></dt>
    <dd>
     <span class="simpara">
      Bandera a pasar a los controladores de base de datos. Si es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, se proporcionarán las banderas por defecto.
      Actualmente, solo el controlador LMDB soporta las siguientes banderas:
      <strong><code><a href="dba.constants.php#constant.dba-lmdb-use-sub-dir">DBA_LMDB_USE_SUB_DIR</a></code></strong> y
      <strong><code><a href="dba.constants.php#constant.dba-lmdb-no-sub-dir">DBA_LMDB_NO_SUB_DIR</a></code></strong>.
     </span>
    </dd>
   
  </dl>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.dba-open-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Devuelve una instancia <span class="classname"><a href="class.dba-connection.php" class="classname">Dba\Connection</a></span> en caso de éxito o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.dba-open-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="simpara">
   <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> es devuelto y se emite un error de nivel <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> cuando
   el parámetro <code class="parameter">handler</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, pero no hay ningún gestor por defecto disponible.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.dba-open-changelog">
  <h3 class="title">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Ahora devuelve una instancia de <span class="classname"><a href="class.dba-connection.php" class="classname">Dba\Connection</a></span>;
       anteriormente se devolvía un <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>.
      </td>
     </tr>

     <tr>
      <td>8.2.0</td>
      <td>
       Se añade el parámetro <code class="parameter">flags</code>.
      </td>
     </tr>

     <tr>
      <td>8.2.0</td>
      <td>
       El parámetro <code class="parameter">handler</code> ahora es nullable.
      </td>
     </tr>

     <tr>
      <td>7.3.14, 7.4.2</td>
      <td>
       El controlador <code class="literal">lmdb</code> ahora soporta un parámetro
       adicional <code class="parameter">map_size</code>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 seealso" id="refsect1-function.dba-open-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.dba-popen.php" class="function" rel="rdfs-seeAlso">dba_popen()</a> - Establece una conexi&oacute;n persistente a una base de datos DBA</span></li>
   <li><span class="function"><a href="function.dba-close.php" class="function" rel="rdfs-seeAlso">dba_close()</a> - Cierra una base DBA</span></li>
  </ul>
 </div>

</div><?php manual_footer($setup); ?>