Функция PHP dns_get_mx(): Всё, что нужно знать
Как разработчик PHP, вы можете столкнуться с необходимостью получить MX-записи (mail exchange) для доменного имени. Функция dns_get_mx() исторически использовалась для этих целей, но была удалена в PHP 8.2. Современный подход использует dns_get_record() с флагом DNS_MX. В этой статье мы рассмотрим устаревшую функцию, причины её удаления и то, как использовать рекомендуемую альтернативу.
Что такое функция dns_get_mx()?
Функция dns_get_mx() была встроенной функцией PHP, которая получала MX-записи для указанного доменного имени и возвращала массив, отсортированный по приоритету. Она была удалена в PHP 8.2. Рекомендуемая замена — dns_get_record($hostname, DNS_MX).
Как использовать функцию dns_get_mx()
Устаревший синтаксис выглядит так: Синтаксис dns_get_mx()
dns_get_mx($hostname, &$mxhosts, &$weight);Функция принимает три параметра:
$hostname: Доменное имя, для которого нужно получить MX-записи.$mxhosts: Переменная по ссылке, в которой хранятся MX-хосты для домена.$weight: Переменная по ссылке, в которой хранятся веса приоритетов.
Ниже приведен пример использования современной функции dns_get_record() для получения MX-записей: Современный поиск MX-записей
<?php
$domain = "example.com";
$records = dns_get_record($domain, DNS_MX);
if ($records) {
foreach ($records as $record) {
echo "Host: " . $record['target'] . ", Priority: " . $record['priority'] . "<br/>";
}
} else {
echo "No MX records found for $domain";
}В этом примере мы получаем MX-записи для домена "example.com". Функция возвращает массив записей, если они найдены, или false в противном случае. Если записи найдены, мы перебираем их с помощью foreach и выводим целевой хост и приоритет. Обратите внимание, что DNS-запросы иногда могут зависать или завершаться ошибкой для некорректных доменов; всегда проверяйте возвращаемое значение и рассмотрите возможность реализации обработки таймаутов для приложений в production.
Заключение
Хотя dns_get_mx() когда-то была стандартом для получения MX-записей, она была удалена в PHP 8.2. Вместо неё используйте dns_get_record($hostname, DNS_MX) для современных и надёжных DNS-запросов. Надеемся, это руководство поможет вам эффективно реализовать поиск MX-записей в ваших PHP-приложениях.
Практика
Какие действия выполняет функция dns_get_mx() в PHP?