我已经为我们的一个客户开发了一个基于网络的在线注册系统,使用PHP,jquery和ajax以及MySQL作为后端。该站点位于我们ISP托管的专用LINUX服务器上。
我遇到的挑战是,当注册打开时,大约有2500人试图进入,网站崩溃并摔倒。从我们可以看到的是,数百名参与者打开了注册页面,然后不断点击页面刷新。页面本身进行MySQL数据库调用,并返回在注册打开时单击的按钮。
我已经考虑过负载均衡,但在这个阶段它是不可行的。有没有办法可以开发一个QUEING系统,系统允许例如一个块让一个人说一次300个人继续或注册,同时将其他人的余额放在等待区域,脚本显示位置人在那个队列中?
希望这有道理吗?
答案 0 :(得分:1)
是的,这是可能的,但正如 mvp 在评论中提到的那样“你真的希望人们足够耐心并等待你的队列吗?”。这可能不是一个好主意。但你仍然可以实现它。
每当用户进入注册页面时,您必须执行以下步骤:
a)计算表格中的条目(您需要创建队列表,您需要为注册页面的每个访问者创建条目)。
b)如果队列表中的总计数等于(比如300),则将用户重定向到等待页面。在等待页面,您可以通过调用脚本来显示当前用户等等,使用jquery ajax显示有关他/她位置的信息。
c)如果总计数小于(比如300),则向用户显示注册页面,并在队列表中输入一个条目以及会话ID(每个用户的唯一ID)和时间。考虑到时间是很好的,因为访客可能会来并且会在注册页面上无所事事。所以你必须设置一个时间限制(比如10分钟)来保持注册以释放队列。
d)用户完成注册后,使用会话ID从该用户的队列表中删除该条目。
但是请记住,让访问者在队列中等待您的站点注册并不是一个好主意。我认为您应该将服务器配置为轻松处理数千个请求,它应该是专用服务器。
我的上述细节只是一个想法,只是为了让您了解如何实施它。
我希望它能帮到你
谢谢
答案 1 :(得分:-2)
我可以使用一个来防止服务器过载,让他们比以后尝试更晚。 1-3 mio。访客一个月的广告横幅,回答率为2-15%,每月150-450000的访问者有广告,所以在高峰时段会很好,因为我们可以说我们有这么多的访客数量所以我们要求你等到高峰期结束然后回来。并告诉他们,以防止服务器崩溃