可以在PHP解释器启动后强制客户端尝试下一个A记录吗?

可以在PHP解释器启动后强制客户端尝试下一个A记录吗?,php,dns,nameservers,Php,Dns,Nameservers,我的怀疑是,一旦一项协议被接受,这是不可能的,但我对浏览器实现或DNS标准没有足够的知识来确定。问题是,一旦客户端(web访问者)与已解析的web服务器建立了连接,是否可以使用该服务器上的PHP脚本来强制客户端尝试连接到下一个可用的a记录(就好像服务器从未访问过或确认过要开始的请求) 我宁愿远离重定向,除非可以通过某种方式确定客户端在循环DNS配置中接收到的记录的顺序(我不相信服务器可能知道)。以下是浏览器DNS交互的过程: (我将把查询传递给TLD,这在这里并不重要) 浏览器请求域的DNS访问

我的怀疑是,一旦一项协议被接受,这是不可能的,但我对浏览器实现或DNS标准没有足够的知识来确定。问题是,一旦客户端(web访问者)与已解析的web服务器建立了连接,是否可以使用该服务器上的PHP脚本来强制客户端尝试连接到下一个可用的a记录(就好像服务器从未访问过或确认过要开始的请求)


我宁愿远离重定向,除非可以通过某种方式确定客户端在循环DNS配置中接收到的记录的顺序(我不相信服务器可能知道)。以下是浏览器DNS交互的过程:

(我将把查询传递给TLD,这在这里并不重要)

浏览器请求域的DNS访问正确的IP

DNS根据自己的内部规则决定将哪个IP发送到浏览器

对浏览器“此域具有此IP”的DNS应答

没有办法“影响”DNS

因此,不,一旦通信开始并且TCP/IP通道打开,就不能“跳转”到另一台服务器

现在,如果您想这样做,除了使用301或302重定向之外,别无选择

同样,如果必须这样做,我想负载平衡肯定配置错误


DNS负载平衡器应该知道IP分发规则,然后再进行分发。若并没有发生这种情况,则说明您配置错误,或者并没有安装或编程您必须安装的内容。

不是用PHP,而是通过负载平衡(请参阅@Baba)。若我的理解是正确的,负载平衡器也不知道记录排序。。。它只是将传入的流量分布在集群中的节点上。我指的是为一个站点配置多个A记录的情况,在这种情况下,会将多个IP地址返回给客户端,而不仅仅是如上所述的一个IP地址。此外,我没有在问题中提到负载平衡。也就是说,如果其余的响应是正确的,这似乎证实了我的怀疑,即在连接后不可能跳过当前A记录。有效地,IP的选择是在“打开服务器的会话之前”进行的,而不是在“之后”。在一个域的DNS中有多个IP是最简单的负载平衡技术,因为您无法使用负载平衡器(软件或硬件)专用于输入,但我这里不是说负载平衡。循环DNS当然可以作为一种简单的负载平衡方法(尽管大多数情况下没有任何相关的负载信息),但这是问题的第三个方面。