Files
php-doc-ru/reference/dba/functions/dba-open.xml
Andrey Gromov b78d3df9cb 15 new
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@340439 c90b9560-bf6c-de11-be94-00142212c4b1
2016-10-11 18:56:42 +00:00

233 lines
9.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. 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: 8b5940cadeb4f1c8492f4a7f70743a2be807cf39 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- $Revision$ -->
<refentry xml:id="function.dba-open" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>dba_open</refname>
<refpurpose>Открывает базу данных</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>resource</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>string</type><parameter>handler</parameter></methodparam>
<methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
</methodsynopsis>
<para>
<function>dba_open</function> устанавливает экземпляр базы данных по пути
<parameter>path</parameter> в режиме <parameter>mode</parameter> используя
обработчик <parameter>handler</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>path</parameter></term>
<listitem>
<para>
Путь до файлов базы данных.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
<literal>r</literal> для режима чтения, <literal>w</literal> для
режима чтения/записи с уже существующей базой данных. <literal>c</literal>
для режима чтения/записи и создания базы данных, если она еще не была создана,
и <literal>n</literal> для создания, обрезания и доступа для чтения/записи.
База данных создается с архитектурой BTree, другие архитектуры (вроде Hash или Queue)
не поддерживаются.
</para>
<para>
Дополнительно, с помощью следующего символа, вы можете задать режим блокировки
базы данных. <literal>l</literal> для блокировки базы данных с помощью файла
<filename>.lck</filename>, или <literal>d</literal> для самостоятельной блокировки
средствами самой базу. Важно, чтобы все ваши приложения делали это согласованно.
</para>
<para>
Если вы хотите просто проверить доступ и не хотите ждать освобождения блокировки,
вы можете добавить третий символ <literal>t</literal>. Если вы абсолютно уверены,
что вам не нужно использовать блокировку базы данных, вы можете использовать
символ <literal>-</literal> вместо <literal>l</literal> или <literal>d</literal>.
Если ни один из символов: <literal>d</literal>, <literal>l</literal> или
<literal>-</literal> не задан, база данных будет использовать режим <literal>d</literal>.
</para>
<note>
<para>
В один момент времени может быть полько один процесс, пишущий в базу данных.
Когда вы используете dba на веб-сервере, и более чем один запрос требует
записи в базу данных, они могут это делать только строго по очереди.
Также, в момент чтения, запись не доступна. Расширение dba использует
блокировки для предотвращения нежелательного поведения.
Изучите следующую таблицу:
<table>
<title>Блокировки DBA</title>
<tgroup cols="9">
<thead>
<row>
<entry>уже открыта</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>не открыта</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>wait</entry>
<entry>false</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "wl"</entry>
<entry>wait</entry>
<entry>false</entry>
<entry>wait</entry>
<entry>false</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "rd"</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>ok</entry>
<entry>ok</entry>
<entry>wait</entry>
<entry>false</entry>
</row>
<row>
<entry><parameter>mode</parameter> = "wd"</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>illegal</entry>
<entry>wait</entry>
<entry>false</entry>
<entry>wait</entry>
<entry>false</entry>
</row>
</tbody>
</tgroup>
</table>
<simplelist>
<member>ok: второй вызов будет успешным.</member>
<member>wait: второй вызов будет ждать, пока первый не вызовет
<function>dba_close</function>.</member>
<member>false: второй вызов вернет &false;.</member>
<member>illegal: вы не можете смешивать модификаторы <literal>"l"</literal> и <literal>"d"</literal> в параметре <parameter>mode</parameter>.</member>
</simplelist>
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>handler</parameter></term>
<listitem>
<para>
Имя <link linkend="dba.requirements">обработчика</link>, который будет
использоваться для доступа по пути <parameter>path</parameter>. Ему передаются
все необязательные параметры, заданные в <function>dba_open</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает обработчик в случае успеха, &return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>4.3.0</entry>
<entry>
Стало возможным открывать файлы баз данных через сетевое соединение.
Однако в случае, когда используется соединение через сокеты (такие как http или ftp),
блокировка будет устанавливаться на соединение, а не на сам ресурс.
Это важно знать, так как в таких случаях блокировка на ресурсе просто игнорируется
и необходимо будет искать другие решения.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</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
-->