主机名重复验证

问题描述:

我有一个表单,允许用户将他的主机添加到数据库 - 可以通过IP地址和域名完成。主机名重复验证

我的问题是 - 我想防止重复的主机:当有一个主机域添加例如。其地址为1.2.3.4,其中DNS A记录,用户基本上可以修改它。到4.3.2.1,然后再添加1.2.3.4主机(通过IP),并将域名A记录回1.2.3.4

我当然可以在使用gethostbyname进行提交时验证数据库中的所有主机名,但gethostbyname确实会阻止DNS查找,因此我宁愿不想将它循环到大型数据集上以防止运行时错误。

有没有解决方案?

+0

问题不是很清楚,但你到目前为止尝试过什么? – mkaatman

+0

@mkaatman最后一句话是我尝试过的,并以糟糕的运行时间结束。 –

它超出了你的控制范围。如果你想确保不会有任何重复,你只能接受数据库中的一个。您仍然可以启用域的输入,但只需立即解决并仅保存IP。否则,您不能100%确定没有检查全部内容就没有重复。如果你不这样做,你将不得不传递旧数据,这是不准确的。如果有时候重复条目发生并不是什么大事,那么最好每天用一些脚本使用cron作业或其他工具来检测它们。

您应该首先定义您的应用程序需要的最小精度,并且稍后检查您拥有的资源数量。之后,您可以计算您当前资源的准确度,然后检查是否足够。 (假设你有没有使用的资源,如果你必须支付所有使用的资源,那么你应该使用你需要的最小值。)

一些想法如何优化你的脚本可以找到here。我也对一个好的和快速的解决方案感兴趣,稍后我可能会写一个优化的脚本并将其链接到这里,但目前我没有时间。

+0

谢谢,这是我需要的答案:)! –

+0

我还是完全不理解这个问题,但是如果你不想重复,你能不能简单地将该字段定义为唯一的? – mkaatman

+0

他正在存储域和IP,它们只能通过使用DNS记录进行比较。他在他的问题中明确地说过。 –