0

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

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

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

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

我很感激你能给我的任何帮助,和/或只是在正确方向上的一点。

4

3 回答 3

0

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

$rand = mt_rand(1, 10);
if ($rand <= 3) { // In this case, 30% of your visitors get redirected.
    // redirect
// normal page
于 2012-06-13T21:42:37.090 回答
0

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

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

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

于 2012-06-13T21:50:32.603 回答
0

这真的取决于情况:

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

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

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

于 2012-06-13T21:52:37.617 回答