2017-07-19 22 views
1

私はユーザーが自分のホストをデータベースに追加できるようなフォームを用意しています。これはIPアドレスとドメイン名のどちらでも行うことができます。ホスト名重複の確認

私の問題は - 私は重複したホストを防ぐ:1つのホストドメインが追加されている場合など。アドレス1.2.3.4がDNS Aレコードにある場合、ユーザーは基本的にそれを変更することができます。 4.3.2.1に変更し、別の1.2.3.4ホスト(IP)を追加し、ドメインA1.2.3.4に戻します。

gethostbynameを使ってサブミット中に私のデータベースのすべてのホスト名を確認できますが、gethostbynameはDNSルックアップをブロックしていますので、悪いランタイムを防ぐために大規模なデータセットにループしたくありません。

解決策はありますか?

+0

質問は非常に明確ではありませんが、これまでに何を試しましたか? – mkaatman

+0

@mkaatman最後の文章は私が試したことであり、ひどいランタイムで終わったものです。 –

答えて

1

です。重複がないようにするには、データベース内のどちらか一方のみを受け入れることができます。それでも、ドメインの入力を有効にできますが、すぐに解決してIPを保存するだけです。そうでなければ、すべてをチェックせずに重複がないことを100%確信できません。そうしないと古いデータを中継する必要があります。これはあまり正確ではありません。重複するエントリが発生する大きな問題ではない場合は、cronジョブやその他のツールを使用してスクリプトを使用して1日に1回検出することが最善です。

まず、アプリケーションに必要な最小精度を定義し、必要なリソースの数を確認してください。その後、現在のリソースでどれくらいの精度を達成できるかを計算し、それが十分であるかどうかを確認することができます。 (使用していないリソースがあると仮定した場合、使用しているすべてのリソースを支払う必要がある場合は、必要最小限のものを使用してください)

スクリプトを最適化する方法については、hereを参照してください。私はまた、良いと高速のソリューションに興味がある、私は多分後で最適化されたスクリプトを書いて、ここにリンクしますが、現在私は時間がありません。

+0

ありがとう、これは私が必要とした答えです:)! –

+0

私はまだ完全に質問を理解していませんが、重複したくない場合は、フィールドを一意であると定義できませんか? – mkaatman

+0

彼はドメインとIPを格納していますが、DNSレコードを使用して比較することしかできません。彼は明らかに彼の質問でそれを言っています。 –

関連する問題