mirror of
https://github.com/php/doc-ru.git
synced 2026-04-28 17:53:14 +02:00
563 lines
21 KiB
XML
563 lines
21 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 7be2426e49ee1c9131866f20b67a48aaea0a642a Maintainer: tmn Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.dns-get-record" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<refnamediv>
|
||
<refname>dns_get_record</refname>
|
||
<refpurpose>
|
||
Получает DNS-записи хоста
|
||
</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type class="union"><type>array</type><type>false</type></type><methodname>dns_get_record</methodname>
|
||
<methodparam><type>string</type><parameter>hostname</parameter></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>type</parameter><initializer><constant>DNS_ANY</constant></initializer></methodparam>
|
||
<methodparam choice="opt"><type>array</type><parameter role="reference">authoritative_name_servers</parameter><initializer>&null;</initializer></methodparam>
|
||
<methodparam choice="opt"><type>array</type><parameter role="reference">additional_records</parameter><initializer>&null;</initializer></methodparam>
|
||
<methodparam choice="opt"><type>bool</type><parameter>raw</parameter><initializer>&false;</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
Функция выбирает DNS-записи, которые соответствуют свойствам хоста
|
||
<parameter>hostname</parameter>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>hostname</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Параметр <parameter>hostname</parameter> должен быть корректным DNS-именем
|
||
наподобие <literal>www.example.com</literal>.
|
||
Обратное разрешение имён хостов выполняют с помощью
|
||
нотации <literal>in-addr.arpa</literal>, однако, для этой цели лучше
|
||
пользоваться функцией <function>gethostbyaddr</function>.
|
||
</para>
|
||
<note>
|
||
<para>
|
||
В соответствии со стандартами DNS, адреса электронной почты задаются в
|
||
формате <literal>user.host</literal> (например,
|
||
<literal>hostmaster.example.com</literal> в отличие от
|
||
<literal>hostmaster@example.com</literal>), поэтому будьте внимательны
|
||
и дополнительно проверьте это значение, прежде чем использовать его в таких
|
||
функциях, как <function>mail</function>.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>type</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
По умолчанию <function>dns_get_record</function> будет искать все возможные
|
||
записи, соответствующие заданному имени хоста
|
||
<parameter>hostname</parameter>. Чтобы сузить круг поиска, можно задать
|
||
необязательный параметр <parameter>type</parameter>. Этот параметр может
|
||
принимать следующие значения:
|
||
<constant>DNS_A</constant>, <constant>DNS_CNAME</constant>,
|
||
<constant>DNS_HINFO</constant>, <constant>DNS_CAA</constant>,
|
||
<constant>DNS_MX</constant>, <constant>DNS_NS</constant>,
|
||
<constant>DNS_PTR</constant>, <constant>DNS_SOA</constant>,
|
||
<constant>DNS_TXT</constant>, <constant>DNS_AAAA</constant>,
|
||
<constant>DNS_SRV</constant>, <constant>DNS_NAPTR</constant>,
|
||
<constant>DNS_A6</constant>, <constant>DNS_ALL</constant>
|
||
или <constant>DNS_ANY</constant>.
|
||
</para>
|
||
<note>
|
||
<para>
|
||
Из-за неоднозначного поведения libresolv на разных платформах,
|
||
<constant>DNS_ANY</constant> может вернуть не все записи, более медленный
|
||
<constant>DNS_ALL</constant> вернёт все записи надёжнее.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Windows: <constant>DNS_CAA</constant> не поддерживается.
|
||
Поддержка <constant>DNS_A6</constant> не реализована.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>authoritative_name_servers</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Передаётся по ссылке и, если передан, будет заполняться ресурсными
|
||
записями для <emphasis>удостоверяющих серверов имён</emphasis>
|
||
(Authoritative Name Servers).
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>additional_records</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Передаётся по ссылке и, если передан, будет заполняться
|
||
<emphasis>дополнительными записями</emphasis>
|
||
(Additional Records).
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>raw</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
<parameter>type</parameter> будет интерпретирован, как необработанный идентификатор типа DNS
|
||
(нельзя использовать константы <literal>DNS_*</literal>).
|
||
Возвращаемое значение будет содержать ключ <literal>data</literal>, который
|
||
необходимо проанализировать вручную.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
Функция возвращает массив ассоциативных массивов&return.falseforfailure;.
|
||
Каждый ассоциативный массив содержит
|
||
<emphasis>по меньшей мере</emphasis> следующие ключи:
|
||
<table>
|
||
<title>Основные атрибуты DNS</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Атрибут</entry>
|
||
<entry>Описание</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>host</entry>
|
||
<entry>
|
||
Запись в пространстве имён DNS, на которую ссылается оставшаяся часть
|
||
данных.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>class</entry>
|
||
<entry>
|
||
Функция <function>dns_get_record</function> возвращает только записи класса
|
||
Internet, соответственно этот параметр всегда будет принимать значение
|
||
<literal>IN</literal>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>type</entry>
|
||
<entry>
|
||
Строка, которая содержит тип записи. Дополнительные атрибуты также будут
|
||
содержаться в результирующем массиве в зависимости от типа. По одному вложенному
|
||
массиву на каждый тип. Смотрите таблицу ниже.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ttl</entry>
|
||
<entry>
|
||
Время жизни (<literal>"Time To Live"</literal>) оставшееся для этой записи.
|
||
Это <emphasis>не</emphasis> исходное ttl записи. Оно равно исходному
|
||
за вычетом времени прошедшего с момента отправки запроса на сервер.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
<para>
|
||
<table>
|
||
<title>Другие ключи ассоциативного массива, соответствующие типу 'type'</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Тип записи</entry>
|
||
<entry>Дополнительные данные</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><literal>A</literal></entry>
|
||
<entry>
|
||
<literal>ip</literal>: адреса IPv4 в десятичном формате с разделителями
|
||
точками.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>MX</literal></entry>
|
||
<entry>
|
||
<literal>pri</literal>: Приоритет почтового сервера. Чем ниже число, тем
|
||
выше приоритет.
|
||
<literal>target</literal>: FQDN почтового сервера.
|
||
Смотрите также <function>dns_get_mx</function>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>CNAME</literal></entry>
|
||
<entry>
|
||
<literal>target</literal>: FQDN места расположения в пространстве имён
|
||
DNS, на которое указывает запись.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>NS</literal></entry>
|
||
<entry>
|
||
<literal>target</literal>: FQDN имя сервера, который является авторитетным
|
||
для этого имени хоста.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>PTR</literal></entry>
|
||
<entry>
|
||
<literal>target</literal>: Расположение без указания пространства имён
|
||
DNS, на которое указывает запись.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>TXT</literal></entry>
|
||
<entry>
|
||
<literal>txt</literal>: Строка данных, связанных с этой записью.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>HINFO</literal></entry>
|
||
<entry>
|
||
<literal>cpu</literal>: число IANA, обозначающее модель процессора
|
||
компьютера, на который указывает эта запись.
|
||
<literal>os</literal>: число IANA, обозначающее операционную систему
|
||
компьютера, на который указывает эта запись.
|
||
Смотрите дополнительно IANA <link xlink:href="&url.iana.system-names;"><literal>Operating
|
||
System Names</literal></link>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>CAA</literal></entry>
|
||
<entry>
|
||
<literal>flags</literal>: Однобайтовое битовое поле; в текущий момент
|
||
определён только бит номер 0, называющийся 'critical'; другие биты зарезервированы
|
||
и должны игнорироваться.
|
||
<literal>tag</literal>: Имя тега CAA (буквенно-числовая строка ASCII).
|
||
<literal>value</literal>: Значение тега CAA (бинарная строка, можно использовать
|
||
подформаты).
|
||
Более подробно читайте тут: <link xlink:href="&url.rfc;6844">RFC 6844</link>
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>SOA</literal></entry>
|
||
<entry>
|
||
<literal>mname</literal>: FQDN изначального компьютера, с которого
|
||
получены ресурсные записи.
|
||
<literal>rname</literal>: Адрес электронной почты администратора домена.
|
||
<literal>serial</literal>: Порядковый номер этой ревизии запрашиваемого
|
||
домена.
|
||
<literal>refresh</literal>: Интервал времени (в секундах), который
|
||
должны использовать вторичные сервера при обновлении удалённых копий
|
||
этого домена.
|
||
<literal>retry</literal>: Время ожидания (в секундах) после неудачного
|
||
обновления до следующей попытки.
|
||
<literal>expire</literal>: Максимальное время (в секундах), в течение
|
||
которого вторичный DNS-сервер должен держать в памяти данные удалённых
|
||
копий доменной зоны, прежде чем ответить отказом, когда не удаётся обновить
|
||
данные.
|
||
<literal>minimum-ttl</literal>: Минимальное время (в секундах), в течение
|
||
которого клиент может работать с текущим DNS-разрешением, прежде чем ему
|
||
придётся повторно запрашивать это разрешение. Значение может быть замещено
|
||
отдельными ресурсными записями.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>AAAA</literal></entry>
|
||
<entry>
|
||
<literal>ipv6</literal>: адрес IPv6
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>A6</literal></entry>
|
||
<entry>
|
||
<literal>masklen</literal>: Длина (в битах), которую нужно унаследовать
|
||
от целевого адреса <parameter>chain</parameter>.
|
||
<literal>ipv6</literal>: Адрес для этой конкретной записи, который нужно
|
||
объединить с <parameter>chain</parameter>.
|
||
<literal>chain</literal>: Запись, которую нужно дополнить данными
|
||
<parameter>ipv6</parameter>.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>SRV</literal></entry>
|
||
<entry>
|
||
<literal>pri</literal>: (Приоритет) меньшие значения должны использоваться
|
||
первыми.
|
||
<literal>weight</literal>: Ранжирование. Записям с большим весом отдаётся
|
||
предпочтение.
|
||
<parameter>targets</parameter> должен выбираться случайно.
|
||
<literal>target</literal> и <literal>port</literal>: имя хоста и номер
|
||
порта, на котором можно найти запрошенную службу.
|
||
Дополнительную информацию можно получить по ссылке: <link xlink:href="&url.rfc;2782">RFC 2782</link>
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry><literal>NAPTR</literal></entry>
|
||
<entry>
|
||
<literal>order</literal> и <literal>pref</literal>: Эквивалентны
|
||
<parameter>pri</parameter> и <parameter>weight</parameter> приведённым выше.
|
||
<literal>flags</literal>, <literal>services</literal>,
|
||
<literal>regex</literal> и <literal>replacement</literal>: Параметры,
|
||
определённые в <link xlink:href="&url.rfc;2915">RFC 2915</link>.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</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>7.0.16, 7.1.2</entry>
|
||
<entry>
|
||
Добавлена поддержка записей типа CAA.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>Пример использования <function>dns_get_record</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
$result = dns_get_record("php.net");
|
||
print_r($result);
|
||
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
Array
|
||
(
|
||
[0] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => MX
|
||
[pri] => 5
|
||
[target] => pair2.php.net
|
||
[class] => IN
|
||
[ttl] => 6765
|
||
)
|
||
|
||
[1] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => A
|
||
[ip] => 64.246.30.37
|
||
[class] => IN
|
||
[ttl] => 8125
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
<example>
|
||
<title>Использование <function>dns_get_record</function> с DNS_ANY</title>
|
||
<para>
|
||
Так как довольно часто требуется определить IP-адрес почтового сервера,
|
||
после того как запись MX была разрешена, <function>dns_get_record</function> возвращает массив
|
||
<parameter>additional_records</parameter> с соответствующими записями. Массив
|
||
<parameter>authoritative_name_servers</parameter> будет содержать список удостоверяющих
|
||
DNS-серверов.
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
/* Отправим "ANY" запрос к php.net,
|
||
создадим массивы $authns и $addtl,
|
||
в которые будут помещён список серверов
|
||
имён и дополнительные записи,
|
||
соответствующие этим серверам
|
||
*/
|
||
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
|
||
echo "Результат = ";
|
||
print_r($result);
|
||
echo "Удостоверяющие серверы = ";
|
||
print_r($authns);
|
||
echo "Дополнительные записи = ";
|
||
print_r($addtl);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs.similar;
|
||
<screen>
|
||
<![CDATA[
|
||
Результат = Array
|
||
(
|
||
[0] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => MX
|
||
[pri] => 5
|
||
[target] => pair2.php.net
|
||
[class] => IN
|
||
[ttl] => 6765
|
||
)
|
||
|
||
[1] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => A
|
||
[ip] => 64.246.30.37
|
||
[class] => IN
|
||
[ttl] => 8125
|
||
)
|
||
|
||
)
|
||
Удостоверяющие серверы = Array
|
||
(
|
||
[0] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => NS
|
||
[target] => remote1.easydns.com
|
||
[class] => IN
|
||
[ttl] => 10722
|
||
)
|
||
|
||
[1] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => NS
|
||
[target] => remote2.easydns.com
|
||
[class] => IN
|
||
[ttl] => 10722
|
||
)
|
||
|
||
[2] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => NS
|
||
[target] => ns1.easydns.com
|
||
[class] => IN
|
||
[ttl] => 10722
|
||
)
|
||
|
||
[3] => Array
|
||
(
|
||
[host] => php.net
|
||
[type] => NS
|
||
[target] => ns2.easydns.com
|
||
[class] => IN
|
||
[ttl] => 10722
|
||
)
|
||
|
||
)
|
||
Дополнительные записи = Array
|
||
(
|
||
[0] => Array
|
||
(
|
||
[host] => pair2.php.net
|
||
[type] => A
|
||
[ip] => 216.92.131.5
|
||
[class] => IN
|
||
[ttl] => 6766
|
||
)
|
||
|
||
[1] => Array
|
||
(
|
||
[host] => remote1.easydns.com
|
||
[type] => A
|
||
[ip] => 64.39.29.212
|
||
[class] => IN
|
||
[ttl] => 100384
|
||
)
|
||
|
||
[2] => Array
|
||
(
|
||
[host] => remote2.easydns.com
|
||
[type] => A
|
||
[ip] => 212.100.224.80
|
||
[class] => IN
|
||
[ttl] => 81241
|
||
)
|
||
|
||
[3] => Array
|
||
(
|
||
[host] => ns1.easydns.com
|
||
[type] => A
|
||
[ip] => 216.220.40.243
|
||
[class] => IN
|
||
[ttl] => 81241
|
||
)
|
||
|
||
[4] => Array
|
||
(
|
||
[host] => ns2.easydns.com
|
||
[type] => A
|
||
[ip] => 216.220.40.244
|
||
[class] => IN
|
||
[ttl] => 81241
|
||
)
|
||
|
||
)
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>dns_get_mx</function></member>
|
||
<member><function>dns_check_record</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
|
||
-->
|