当流量增加时,将一定比例的访问者重定向到另一个页面

Redirect certain percentage of visitors to another page when traffic ramps up

本文关键字:重定向 访问者 另一个 增加 流量      更新时间:2023-09-26

我的任务是创建一个脚本,可以在高峰时段将我们网站流量的 10%、20%、50% 等重定向到"技术困难"页面,指示访问者稍后再回来,以减轻我们申请人的负担。

我们的申请人在申请之前都会通过一个中央登录页面进行漏斗,对于这个例子,假设它是"www.example.com/index.php"。所以问题是,是否有可能创建一个脚本,在这些高流量时期,我们可以进入并让它每 5、10、20 个访问者重定向到"www.example.com/down.php"?

我们选择重定向这些人不是由于服务器负载,而是因为我们每月只能拥有有限数量的申请人。这将创造几天的时间,我们基本上可以减少我们的申请人,这样我们就不会超过这个门槛。

我知道如何将所有访问者完全重定向到一个网站,但在这种情况下是行不通的。我已经在这个网站上浏览了几个类似的问题,虽然仍然很有帮助,但我无法弄清楚如何正确处理这样的情况。

我感谢你能给我的任何和所有帮助,和/或只是朝着正确的方向前进。

我建议研究其他解决方案,因为这不是对待访问者的好方法,但如果您真的想这样做,请使用:

$rand = mt_rand(1, 10);
if ($rand <= 3) { // In this case, 30% of your visitors get redirected.
    // redirect
// normal page

据推测,能够访问您网站的用户可以访问多个页面,因此您必须执行一些操作,以便在用户被授予访问该站点的权限时,他们将被记住。为此,我将使用会话。因此,当用户访问网站并且不存在会话cookie时,只需执行以下操作:

if (rand(0,100) > 30) {
    // Set cookie
}
else {
    // so sorry. site is down for you
    // redirect
}

但是,问题是,您究竟希望如何处理那些无法访问该网站的人?因为他们所要做的就是刷新页面,并且在 70% 的时间内,他们将被授予访问权限。如果您希望它是永久性的,则必须找到某种方法将它们列入黑名单。您可以在 cookie 中执行此操作,但随后用户可以轻松删除它并重试。使其持久化的唯一方法是将其 IP 地址存储在数据库中。这就引出了第三个问题,共享IP呢?也许您可以先检查会话,然后如果找不到,请检查数据库中列入黑名单的 IP。这样,用户绕过它的唯一方法是拥有动态 IP 或使用代理。

这实际上取决于情况:

  • 如果服务器对负载完全没有问题,您的实际目标是限制每天的应用程序,然后可以解决这个问题使用 PHP 脚本。与其重定向到错误页面,我建议告诉访问者有关限制的真相。这样,访问者就不会多次点击 [F5],希望它会在几秒钟后工作,因为这会进一步增加服务器负载。我还建议设置一个真正的限制,而不是重定向每个第 n 个用户。

  • 如果服务器在处理重负载时遇到问题,它甚至可能不会能够重定向所有请求。在这种情况下,您必须扩展您的能够处理负载的服务器。可能的解决方案:使用负载均衡器将流量路由到不同的服务器;升级您的服务器;优化您的代码(以便服务器可以在不扩展硬件的情况下承担负载)

  • 如果您只决定设置每天的申请限制,因为服务器无法处理负载,请再次扩展服务器是最好的解决方案。