Aktueller Standort: Startseite> Neueste Artikel> Was sind die grundlegenden Verwendungen der Funktion DNS_Get_Record? Wie kann ich dns_get_record in PHP effizient verwenden?

Was sind die grundlegenden Verwendungen der Funktion DNS_Get_Record? Wie kann ich dns_get_record in PHP effizient verwenden?

gitbox 2025-06-27

In PHP ist die Funktion dns_get_record () ein sehr praktisches Instrument, um DNS -Datensatzinformationen für einen bestimmten Domänennamen zu erhalten. Diese Funktion bietet Entwicklern die Möglichkeit, Datensätze direkt vom DNS -Server abzufragen, und wird häufig in der Netzwerkdiagnose, der E -Mail -Systementwicklung, der Domainnamen -Tool -Plattform und anderen Szenarien verwendet.

1. Grundlegende Verwendung von dns_get_record

Der Funktionsprototyp von dns_get_record () lautet wie folgt:

 <span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">dns_get_record</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$hostname</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$type</span></span><span> = DNS_ANY [, </span><span><span class="hljs-keyword">array</span></span><span> &amp;</span><span><span class="hljs-variable">$authns</span></span><span> [, </span><span><span class="hljs-keyword">array</span></span><span> &amp;</span><span><span class="hljs-variable">$addtl</span></span><span> ]]] )
</span></span>
  • $ hostname : Der Hostname zur Abfrage (z. B. Beispiel.com ).

  • $ type : Der DNS -Datensatztyp für die Abfrage. Zu den häufig verwendeten Typen gehören:

    • DNS_A : IPv4 -Adresse

    • DNS_AAAA : IPv6 -Adresse

    • DNS_MX : Mail Exchange -Datensatz

    • DNS_CNAME : Alias ​​-Datensatz

    • DNS_TXT : Textrekord

    • DNS_NS : Domänenname -Server

    • DNS_SOA : Aufzeichnung der Autorisierungsagentur starten

    • DNS_ANY : Alle Arten von Datensätzen

  • $ authns (optional): Gibt autoritative Namenserverinformationen zurück.

  • $ addtl (optional): Gibt zusätzliche Datensätze zurück.

Beispiel 1: Fragen Sie einen Datensatz an

 <span><span><span class="hljs-variable">$records</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dns_get_record</span></span><span>(</span><span><span class="hljs-string">"example.com"</span></span><span>, DNS_A);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$records</span></span><span>);
</span></span>

Dieser Code gibt ein Array mit allen Datensätzen zurück. Jedes Element ist ein assoziatives Array mit Feldern wie Host , Typ , IP , TTL usw.

Beispiel 2: Abfragen von MX -Datensätzen

 <span><span><span class="hljs-variable">$mxRecords</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dns_get_record</span></span><span>(</span><span><span class="hljs-string">"example.com"</span></span><span>, DNS_MX);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$mxRecords</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$record</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Mail Server: <span class="hljs-subst">{$record['target']}</span></span></span><span>, Priority: </span><span><span class="hljs-subst">{$record['pri']}</span></span><span>\n";
}
</span></span>

2. Tipps zur effizienten Verwendung von DNS_get_Record

Um diese Funktion effizienter zu verwenden, gibt es mehrere praktische Tipps und Vorschläge:

1. Definieren Sie den Datensatztyp

Vermeiden Sie die Verwendung von DNS_ANY , da dies alle Arten von Datensätzen gleichzeitig anfordert, was möglicherweise zusätzliche Leistungsaufwand erscheint. Im tatsächlichen Gebrauch sollte nur der erforderliche Datensatztyp abgefragt werden.

2. Verwenden Sie Cache, um doppelte Abfragen zu reduzieren

DNS_Get_Record () wird die Ergebnisse nicht zwischenspeichert, und jedes Mal, wenn der Anruf aufgerufen wird, wird eine echte DNS -Abfrage ausgeführt. Wenn Sie während eines Anwendungslebenszyklus wiederholt denselben Domänennamen abfragen müssen, wird empfohlen, ihn in Verbindung mit einem Caching -Mechanismus (wie APCU oder Memcached) zu verwenden:

 <span><span><span class="hljs-variable">$cacheKey</span></span><span> = </span><span><span class="hljs-string">'dns_a_example_com'</span></span><span>;
</span><span><span class="hljs-variable">$records</span></span><span> = </span><span><span class="hljs-title function_ invoke__">apcu_fetch</span></span><span>(</span><span><span class="hljs-variable">$cacheKey</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$records</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-variable">$records</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dns_get_record</span></span><span>(</span><span><span class="hljs-string">"example.com"</span></span><span>, DNS_A);
    </span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-variable">$cacheKey</span></span><span>, </span><span><span class="hljs-variable">$records</span></span><span>, </span><span><span class="hljs-number">300</span></span><span>); </span><span><span class="hljs-comment">// Cache5Minute</span></span><span>
}
</span></span>

3.. Fehlerbehandlung und Ergebnisüberprüfung

False wird zurückgegeben, wenn die Abfrage dns_get_record () fehlschlägt.

 <span><span><span class="hljs-variable">$records</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dns_get_record</span></span><span>(</span><span><span class="hljs-string">"example.com"</span></span><span>, DNS_MX);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$records</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"DNS Abfrage fehlgeschlagen"</span></span><span>);
    </span><span><span class="hljs-comment">// Sie können einen Fallback -Mechanismus oder Benutzeranforderungen entsprechend Ihren Anforderungen durchführen</span></span><span>
}
</span></span>

4. Analysieren Sie verschiedene Arten von Feldern

Verschiedene Arten von DNS -Datensatzfeldern sind geringfügig unterschiedlich. Zum Beispiel gibt es ein IP -Feld im A -Datensatz, während es im MX -Datensatz PRI und Ziel gibt. Bei der Verarbeitung dieser Daten sollten Sie auf strukturelle Unterschiede achten:

 <span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$records</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$record</span></span><span>) {
    </span><span><span class="hljs-keyword">switch</span></span><span> (</span><span><span class="hljs-variable">$record</span></span><span>[</span><span><span class="hljs-string">'type'</span></span><span>]) {
        </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'A'</span></span><span>:
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"IP: "</span></span><span> . </span><span><span class="hljs-variable">$record</span></span><span>[</span><span><span class="hljs-string">'ip'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
            </span><span><span class="hljs-keyword">break</span></span><span>;
        </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'MX'</span></span><span>:
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MX: "</span></span><span> . </span><span><span class="hljs-variable">$record</span></span><span>[</span><span><span class="hljs-string">'target'</span></span><span>] . </span><span><span class="hljs-string">" (Priority: "</span></span><span> . </span><span><span class="hljs-variable">$record</span></span><span>[</span><span><span class="hljs-string">'pri'</span></span><span>] . </span><span><span class="hljs-string">")\n"</span></span><span>;
            </span><span><span class="hljs-keyword">break</span></span><span>;
    }
}
</span></span>

3. Zusammenfassung

Die Funktion DNS_Get_Record () von PHP bietet eine Möglichkeit, direkt auf Domain -Namensauflösungsdatensätze zuzugreifen, die für Szenarien sehr geeignet sind, in denen dynamische DNS -Abfragen erforderlich sind. Durch rationales Festlegen des Abfragetyps, des Hinzufügens eines Cache -Mechanismus und der Strukturierung des Auflösungsrückgabewerts kann diese Funktion in tatsächlichen Anwendungen effizienter und sicherer verwendet werden. Bei der Entwicklung von DNS-bezogenen Funktionen ist DNS_Get_Record () ein unverzichtbares Werkzeug.