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

时间:2012-06-13 21:37:53

标签: php javascript html redirect

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

我们的申请人在申请之前都会通过中央登陆页面进行汇总,本例中我们可以说是“www.example.com/index.php”。所以问题是,是否有可能创建一个脚本,在这些高容量时间内我们可以进入并让它将每个第5,10,20位访问者重定向到“www.example.com/down.php”?

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

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

我感谢你能给予我的任何和所有帮助,和/或只是正确方向的一点。

3 个答案:

答案 0 :(得分:0)

我会建议寻找其他解决方案,因为这不是一种对待访问者的好方法,但如果你真的想这样做,请使用:

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这取决于具体情况:

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

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

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