Перейти к содержимому

Функция 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()

php
getmxrr($hostname, &$mxhosts, &$weight);

Функция принимает три параметра:

  • $hostname: Доменное имя, для которого необходимо получить MX-записи.
  • $mxhosts: Ссылка на массив, в котором будут храниться MX-хосты для указанного доменного имени. (Примечание: в PHP 5.3+ символ & требуется только в сигнатуре функции, а не при её вызове.)
  • $weight: Ссылка на массив, в котором будут храниться приоритетные веса MX-хостов.

Ниже приведён пример использования функции getmxrr() для получения MX-записей доменного имени:

Как использовать функцию getmxrr()?

php
<?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?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.