Files
archived-doc-pt-br/reference/dba/functions/dba-open.xml
2025-06-06 22:35:10 -03:00

297 lines
11 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 44428b04b7b046593e9ab33874eddd1fea7dfab1 Maintainer: leonardolara Status: ready --><!-- CREDITS: leonardolara -->
<refentry xml:id="function.dba-open" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>dba_open</refname>
<refpurpose>Abre um banco de dados</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>Dba\Connection</type><type>false</type></type><methodname>dba_open</methodname>
<methodparam><type>string</type><parameter>path</parameter></methodparam>
<methodparam><type>string</type><parameter>mode</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>handler</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>permission</parameter><initializer>0644</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>map_size</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>flags</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>dba_open</function> estabelece uma instância de banco de dados para
o arquivo especificado em <parameter>path</parameter> no modo definido por <parameter>mode</parameter> usando
o manipulador informado em <parameter>handler</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path</parameter></term>
<listitem>
<para>
Normalmente um caminho comum no seu sistema de arquivos.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Define os modos: <literal>r</literal> para acesso de leitura, <literal>w</literal> para
acesso de leitura/gravação a um baco de dados já existente, <literal>c</literal>
para leitura/gravação e criação de banco de dados se ainda não existir,
e <literal>n</literal> para criar, truncar e acesso leitura/gravação.
O banco de dados é criado modo de árvore binária (BTree), outros modos (como Hash ou Queue)
não são suportados.
</para>
<para>
Além disso, pode ser definido o método de trava do banco de dados com o próximo caractere.
Use <literal>l</literal> para travar o banco de dados com um arquivo <filename>.lck</filename>
ou <literal>d</literal> para travar o próprio arquivo de banco de dados. É
importante que todas as aplicações façam isso de forma consistente.
</para>
<para>
Se a intenção for testar o acesso e não esperar pela trava,
pode-se adicionar <literal>t</literal> como terceiro caractere. Quando
houver certeza absoluta de que não é necessário travar o banco de dados,
pode-se fazê-lo usando <literal>-</literal> em vez de <literal>l</literal> ou
<literal>d</literal>. Quando nenhum dos caracteres <literal>d</literal>,
<literal>l</literal> ou <literal>-</literal> forem usados, o DBA irá travar
o arquivo de banco de dados como faria com <literal>d</literal >.
</para>
<note>
<para>
Só pode haver um gravador para um arquivo de banco de dados. Quando um DBA é usados
em um servidor web e mais de uma solicitação requerer operações de gravação, elas só
poderão ser feitas uma após a outra. Também não será permitido ler durante a gravação.
A extensão DBA usa travas para evitar isso. Veja a tabela a seguir:
<table>
<title>Travas DBA</title>
<tgroup cols="9">
<thead>
<row>
<entry>já aberto</entry>
<entry><parameter>mode</parameter> = "rl"</entry>
<entry><parameter>mode</parameter> = "rlt"</entry>
<entry><parameter>mode</parameter> = "wl"</entry>
<entry><parameter>mode</parameter> = "wlt"</entry>
<entry><parameter>mode</parameter> = "rd"</entry>
<entry><parameter>mode</parameter> = "rdt"</entry>
<entry><parameter>mode</parameter> = "wd"</entry>
<entry><parameter>mode</parameter> = "wdt"</entry>
</row>
</thead>
<tbody>
<row>
<entry>não aberto</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>ok</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "rl"</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>espera</entry>
<entry>falso</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "wl"</entry>
<entry>espera</entry>
<entry>falso</entry>
<entry>espera</entry>
<entry>falso</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "rd"</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>espera</entry>
<entry>falso</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "wd"</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>ilegal</entry>
<entry>espera</entry>
<entry>falso</entry>
<entry>espera</entry>
<entry>falso</entry>
</row>
</tbody>
</tgroup>
</table>
<simplelist>
<member>ok: a segunda chamada será bem sucedida.</member>
<member>espera: a segunda chamada espera até que <function>dba_close</function> seja chamada para a primeira.</member>
<member>falso: a segunda chamada retorna falso.</member>
<member>ilegal: não se deve misturar os modificadores <literal>"l"</literal> e <literal>"d"</literal> no parâmetro <parameter>mode</parameter>.</member>
</simplelist>
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>handler</parameter></term>
<listitem>
<para>
O nome do <link linkend="dba.requirements">manipulador</link> que
deve ser usado para acessar o arquivo definido em <parameter>path</parameter>. São passados
todos os parâmetros opcionais fornecidos para <function>dba_open</function> e
pode agir em nome deles. Se <parameter>handler</parameter> for &null;,
o manipulador padrão será invocado.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>permission</parameter></term>
<listitem>
<para>
Parâmetro opcional &integer; que é passado ao driver. Tem o mesmo significado que
o parâmetro <parameter>permissions</parameter> de <function>chmod</function> (*nix)
e o padrão é <literal>0644</literal>.
</para>
<para>
Os drivers <literal>db1</literal>, <literal>db2</literal>, <literal>db3</literal>,
<literal>db4</literal>, <literal>dbm</literal>, <literal>gdbm</literal>,
<literal>ndbm</literal> e <literal>lmdb</literal> suportam o
parâmetro <parameter>permission</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>map_size</parameter></term>
<listitem>
<para>
Parâmetro opcional &integer; que é passado ao driver. Seu valor deve ser um múltiplo do
tamanho da página do sistema operacional, ou zero, para usar o tamanho padrão do mapa.
</para>
<para>
Somente o driver <literal>lmdb</literal> aceita o parâmetro <parameter>map_size</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
Opções a serem passadas aos drivers de banco de dados. Se for &null;, as opções padrão serão passadas.
Atualmente, apenas o driver LMDB suporta as opções
<constant>DBA_LMDB_USE_SUB_DIR</constant> e
<constant>DBA_LMDB_NO_SUB_DIR</constant>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retorna uma instância de <classname>Dba\Connection</classname> em caso de sucesso&return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
&false; é retornado e um erro de nível <constant>E_WARNING</constant> é emitido quando
<parameter>handler</parameter> for &null; mas não houver manipulador padrão.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.4.0</entry>
<entry>
Retorna agora uma instância de <classname>Dba\Connection</classname>;
anteriormente, retornava um &resource;.
</entry>
</row>
<row>
<entry>8.2.0</entry>
<entry>
<parameter>flags</parameter> foi adicionado.
</entry>
</row>
<row>
<entry>8.2.0</entry>
<entry>
<parameter>handler</parameter> agora pode ser nulo.
</entry>
</row>
<row>
<entry>7.3.14, 7.4.2</entry>
<entry>
O driver <literal>lmdb</literal> agora suporta o parâmetro adicional
<parameter>map_size</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>dba_popen</function></member>
<member><function>dba_close</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->