Функция PHP getmxrr(): Всё, что вам нужно знать
Как разработчик PHP, вы можете столкнуться с необходимостью получить MX-записи (mail exchange) для указанного доменного имени. В таких сценариях исторически использовалась функция getmxrr(). Важно: функция getmxrr() была помечена как устаревшая в PHP 8.2 и удалена в PHP 8.4. Для современных PHP-приложений вместо неё следует использовать dns_get_record(). В этой статье рассматривается устаревшая функция для поддержки старых кодовых баз.
Что такое функция getmxrr()?
Функция getmxrr() выполняет DNS-запрос для указанного доменного имени и возвращает массив всех связанных MX-записей. Для её работы необходимо, чтобы в вашей среде PHP был включён расширение dns. Функция возвращает true при успехе и false при ошибке.
Как использовать функцию getmxrr()
Использование функции getmxrr() довольно просто. Ниже приведён синтаксис функции:
PHP-синтаксис функции getmxrr()
getmxrr($hostname, &$mxhosts, &$weight);Функция принимает три параметра:
$hostname: Доменное имя, для которого необходимо получить MX-записи.$mxhosts: Ссылка на массив, в котором будут храниться MX-хосты для указанного доменного имени. (Примечание: в PHP 5.3+ символ&требуется только в сигнатуре функции, а не при её вызове.)$weight: Ссылка на массив, в котором будут храниться приоритетные веса MX-хостов.
Ниже приведён пример использования функции getmxrr() для получения MX-записей доменного имени:
Как использовать функцию getmxrr()?
<?php
$hostname = "example.com";
$mxhosts = [];
$weight = [];
if (getmxrr($hostname, $mxhosts, $weight)) {
for ($i = 0; $i < count($mxhosts); $i++) {
echo "MX record for $hostname: " . $mxhosts[$i] . ", Weight: " . $weight[$i] ;
}
} else {
echo "No MX record found for $hostname";
}В этом примере мы получаем MX-записи для доменного имени "example.com". Функция выполняет DNS-запрос и заполняет массивы $mxhosts и $weight. Затем мы проходим по массивам и выводим MX-хосты и их веса. Если запрос завершается неудачей, блок else обрабатывает ошибку корректно.
Заключение
Функция getmxrr() является устаревшим инструментом для получения MX-записей в старых версиях PHP. Понимая её синтаксис и поведение, вы сможете поддерживать совместимость со старыми кодовыми базами. Для новых проектов мы рекомендуем вместо неё использовать dns_get_record() с флагом типа DNS_MX. Надеемся, эта статья оказалась полезной для работы с историческими DNS-функциями PHP.
Практика
Какова роль функции getmxrr() в PHP?